gpt4 book ai didi

node.js - 来自 node.js 的 phantomjs 调用 uing spawn 似乎不执行脚本

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:02 26 4
gpt4 key购买 nike

我正在尝试从动态 Handlebars 网页生成一个 pdf 文件,该网页将显示数据库中的数据。一旦我让它在我的本地机器上运行,我想将代码移动到 elastic beanstalk。代码似乎在运行,最初调用了 spawn,但是,调用 phantomjs 似乎并没有启动传递给它的脚本。只是为了确认,我在文件的最开头添加了一条 console.log 语句,但从未打印出来。更不用说脚本文件中的其他打印语句了。代码如下:

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) 我该如何解决?

最佳答案

问题可能是 PhantomJS 出于安全原因无法使用带点的路径运行 capture.js。例如,尝试从当前目录运行 capture.js。

关于node.js - 来自 node.js 的 phantomjs 调用 uing spawn 似乎不执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42967821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com