5
我想從動態句柄網頁生成一個PDF文件,它將顯示數據庫中的數據。一旦我在本地機器上完成這個工作,我想將代碼移動到彈性beanstalk中。代碼似乎運行,最初使調用產卵,但是,調用phantomjs似乎並沒有啓動傳遞給它的腳本。爲了確認,我在文件的開頭添加了一個console.log語句,並且從不打印。更不用說腳本文件中的其他打印語句了。代碼如下:phantomjs調用node.js使用spawn似乎並不執行腳本
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);
}
我在這個問題可能出現的地方處於虧損狀態。 capture.js的第一行似乎沒有被調用。 1)我錯過了什麼問題? 2)我該如何解決它?