传递给子进程的参数未定义
Passed argument to the child process is undefined
我是 运行 使用 child_process.fork()
的脚本中的脚本。我在我的主脚本中使用了一个变量(另一个应用程序的实例),我需要将它作为参数传递给后续脚本以在那里更新它。我按照
的方式尝试了
下标
console.log(process.data);
let a = process.data;
.....................
主脚本
function runScript(scriptPath, data, callback) {
var invoked = false;
var process = childProcess.fork(scriptPath, data);
process.on('error', function (err) {
if (invoked) return;
invoked = true;
callback(err);
});
process.on('exit', function (code) {
if (invoked) return;
invoked = true;
var err = code === 0 ? null : new Error('exit code ' + code);
callback(err);
});
}
let dataValues = "this from the main script";
runScript('./subscript.js' ,dataValues, function (err) {
if (err) throw err;
console.log('finished running some-script.js');
});
当我尝试从后续脚本访问参数时,我得到 undefined
。似乎参数没有发送到后续脚本。如果我不将参数传递给第二个脚本,它就是预期的 运行。
我的数据发送到后续脚本的方式有什么问题?
您可以将 args 作为命令行参数发送到您的第二个脚本,例如
childProcess.fork(scriptPath+" "+data); //data can be a1 a2 a3
然后在您的脚本 (scriptPath) 上,您可以通过 process.argv
访问它们
for (let j = 0; j < process.argv.length; j++) {
console.log(j + ' -> ' + (process.argv[j]));
}
// 输出将是
0 -> a1
1 -> a2
2 -> a3
.fork(...)
期望 string[]
,而不是 string
(docs),因此请尝试将参数作为数组传递:
let dataValues = ["this from the main script"];
此外,在子进程中,您将收到 process.argv
array 中的参数,而不是 process.data
。在子进程脚本中试试这个:
console.log(process.argv);
我是 运行 使用 child_process.fork()
的脚本中的脚本。我在我的主脚本中使用了一个变量(另一个应用程序的实例),我需要将它作为参数传递给后续脚本以在那里更新它。我按照
下标
console.log(process.data);
let a = process.data;
.....................
主脚本
function runScript(scriptPath, data, callback) {
var invoked = false;
var process = childProcess.fork(scriptPath, data);
process.on('error', function (err) {
if (invoked) return;
invoked = true;
callback(err);
});
process.on('exit', function (code) {
if (invoked) return;
invoked = true;
var err = code === 0 ? null : new Error('exit code ' + code);
callback(err);
});
}
let dataValues = "this from the main script";
runScript('./subscript.js' ,dataValues, function (err) {
if (err) throw err;
console.log('finished running some-script.js');
});
当我尝试从后续脚本访问参数时,我得到 undefined
。似乎参数没有发送到后续脚本。如果我不将参数传递给第二个脚本,它就是预期的 运行。
我的数据发送到后续脚本的方式有什么问题?
您可以将 args 作为命令行参数发送到您的第二个脚本,例如
childProcess.fork(scriptPath+" "+data); //data can be a1 a2 a3
然后在您的脚本 (scriptPath) 上,您可以通过 process.argv
访问它们for (let j = 0; j < process.argv.length; j++) {
console.log(j + ' -> ' + (process.argv[j]));
}
// 输出将是
0 -> a1
1 -> a2
2 -> a3
.fork(...)
期望 string[]
,而不是 string
(docs),因此请尝试将参数作为数组传递:
let dataValues = ["this from the main script"];
此外,在子进程中,您将收到 process.argv
array 中的参数,而不是 process.data
。在子进程脚本中试试这个:
console.log(process.argv);