【发布时间】:2020-02-28 00:10:04
【问题描述】:
我有一个在 CLI 中运行良好的 NPM 启动脚本。
我正在尝试使用fork(),因此它将运行一个子进程,然后该子进程会将一些数据返回给父进程。然后使用 node-cron 调度程序每天运行它。
当我使用这样的简单 exec 时它可以工作
parent.js
const cp = require('child_process');
cp.exec("npm run start argument1 argument2", (err, stdout, stderr) => {
console.log('exec',stdout)
});
child.js
let data = someCode()
process.stdout.write("data:" + JSON.stringify(data))
但是我无法将数据返回给父级,所以我尝试了这个不起作用:
parent.js
const cp = require('child_process');
var child = cp.fork("npm run start argument1 argument2", [], { silent: true });
child.on("message", (data) =>{
console.log('data',data)
})
child.js
let data = someCode()
process.stdout.write("data:" + JSON.stringify(data))
process.send(res)
它甚至没有运行脚本,但它也没有返回任何错误。
编辑:
也许它与babel-node 有关?
这是 package.json 的外观:
{
"scripts": {
"start": "babel-node index.js --",
},
"dependencies": {
"@babel/core": "^7.2.2",
"@babel/node": "^7.2.2",
"@babel/preset-env": "^7.3.1",
"axios": "^0.18.0",
"memory-cache": "^0.2.0",
"moment": "^2.24.0",
"node-cron": "^2.0.3",
"puppeteer": "2.0.0",
"puppeteer-firefox": "^0.5.0",
"shelljs": "^0.8.3"
}
}
【问题讨论】:
标签: javascript node.js fork child-process