2017-03-23 18 views
5

Tôi đang cố gắng tạo tệp pdf từ trang web xử lý động sẽ hiển thị dữ liệu từ cơ sở dữ liệu. Một khi tôi nhận được điều này để làm việc trên máy địa phương của tôi, tôi muốn di chuyển mã lên đến beanstalk đàn hồi. Mã dường như chạy mà ban đầu làm cho các cuộc gọi đến đẻ trứng, tuy nhiên, gọi đến phantomjs dường như không khởi động kịch bản được truyền cho nó. Chỉ cần để xác nhận, tôi đã thêm một tuyên bố console.log ở đầu của tập tin và không bao giờ in ra. Chưa kể câu lệnh in khác trong tệp tập lệnh. Mã bên dưới:gọi phantomjs từ node.js uing spawn dường như không thực thi tập lệnh

code that performs the spawn: 
var childArgs = [ 
        //'--debug=true', 
        path.join(__dirname, '../phantom/capture.js'), 
        id, 
        filename 
       ]; 

      let child = spawn(phantomjs.path, childArgs, {detached: false}); 

      console.log('set up stderr.....'); 
      child.stderr.on('data', (data) => { 
       console.log('ps stderr: ${data}'); 
      }); 

      console.log('set up stdout.....'); 
      child.stdout.on('data', (data) => { 
       console.log('ps stdout: ${data}'); 
      }); 

      console.log('set up close.....'); 
      child.on('close', (code) => { 
       console.log('this is a test 2.....'); 
       console.log(code); 
       if (code !== 0){ 
        let error = new Error('An error occurred while creating the current report.'); 
        error.status = 500; 
        reject(error); 
       } 

       resolve(fname); 
       return; 
      }); 




capture.js: 
console.log('we are inside....'); 
let os = require('os'); 
var system = require('system'); 
console.log('we are inside.... 1'); 
var page = require('webpage').create(); 
let phantom = require('phantomjs-prebuilt'); 
console.log('we are inside....2'); 
var args = system.args; 
console.log('we are inside....3'); 

if (args.length === 1) { 
    phantom.exit(0); 
} else { 
    page.viewportSize = { width: 2000, height: 800 }; 
//page.paperSize = { format: 'Letter', orientation: 'landscape', margin: '1cm' }; 
page.paperSize = { width: '1280px', height: '800px', margin: '0px' }; 
page.settings.localToRemoteUrlAccessEnabled = true; 
page.settings.loadImages = true; 
page.settings.javascriptEnabled = true; 

let done = false; 
//"http://example.com/order/" + args[1] + '?token=' + args[2] 
page.open("http://example.com/order/" + args[1], function start(status) { 
    if (status === "success"){ 
     page.render(os.tmpdir() + '/' + args[2], { format: 'pdf' }); 
    } 

    done = true; 
}); 

var intervalId = setInterval(function(){ 
    if (done){ 
     phantom.exit(); 
    } 
}, 100); 
} 

Tôi đang thua lỗ về vấn đề có thể xảy ra. Dòng đầu tiên của capture.js dường như không được gọi. 1) vấn đề mà tôi đang thiếu là gì? 2) Làm thế nào tôi có thể sửa chữa nó?

Trả lời

0

Sự cố có thể là do PhantomJS không thể chạy capt.js với đường dẫn có dấu chấm vì lý do bảo mật. Hãy thử chạy capture.js từ thư mục hiện tại, ví dụ.

Các vấn đề liên quan