У меня есть NPM стартовый скрипт, который хорошо работает с CLI. Я пытаюсь использовать fork()
, чтобы он запускал дочерний процесс, затем этот дочерний процесс вернет некоторые данные родительскому процессу. А затем используйте планировщик node-cron для ежедневного запуска.
Это работает, когда я использую простой exe c, как этот
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
? Вот как выглядит упаковка. 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"
}
}