gpt4 book ai didi

javascript - 子进程 - Node.js 与 CasperJs : How to include arguments?

转载 作者:行者123 更新时间:2023-12-03 09:52:30 26 4
gpt4 key购买 nike

我尝试使用参数设置 NodeJS 子进程。如果我使用 node 运行子进程,它工作正常,但如果我使用 casperjs 运行,它就不起作用。我确保 casperjs 正常运行,另一个 casperjs 脚本运行良好。这是我的设置:

parent.js

var exec = require('child_process').exec;

exec('node child.js', {
env: {
number: 123
}
}, function(err, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (err !== null) {
console.log('exec error: ' + err);
}
});

parent2.js

var exec = require('child_process').exec;

exec('casperjs child.js', {
env: {
number: 123
}
}, function(err, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (err !== null) {
console.log('exec error: ' + err);
}
});

child.js

var number = process.env.number;
console.log(typeof(number));

number = parseInt(number, 10);
console.log((number));

输出

$ node parent.js
stdout: string
123

stderr:

$ node parent2.js
stdout: Fatal: [Errno 2] No such file or directory; did you install phantomjs?

stderr:
exec error: Error: Command failed:

为什么使用 casperjs 运行子进程时不能使用参数?

最佳答案

子进程在单独的进程中运行

调用“exec”时必须传递环境变量 https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

var exec = require('child_process').exec;

exec('casperjs child.js', {
env: {
'PATH': '<your path locations with path delimiter>'
}
},

Windows 路径示例

c:\\phantomjs\\bin;c:\\casperjs\\bin;C:\\Users\\<username>\\AppData\\Roaming\\npm\\;C:\\Program Files\\nodejs

双斜杠\\用于在字符串内转义

Linux 路径示例

/opt/node:/opt/phantomjs/bin:/opt/casperjs/bin
仅当您安装在自定义位置时才需要

/opt/node。由于默认 Node 将进入默认可见路径

否则将环境变量添加到/etc/profile

引用How to set environment variable for everyone under my linux system?

关于javascript - 子进程 - Node.js 与 CasperJs : How to include arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849510/

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