我遇到有关产生nodeJs脚本的错误:
exec('node ./modules/buttons', function(error, stdout, stderr) {
if(error) console.log(error);
console.log(stdout);
if(stderr) console.log(stderr);
});
Exec完美无缺。但是 spawn
var buttons = spawn('node ./modules/buttons.js', []);
buttons.stdout.on('data', function(data){
console.log(data);
});
给我以下错误:
spawn node ./modules/buttons.js ENOENT
定义脚本的绝对路径会导致相同的错误。如果有人可以帮我解决这个问题,我将不胜感激;我完全不知道这可能是什么原因,谷歌也没有帮助我。
答案 0 :(得分:1)
exec
接受要执行的命令以及所有命令行参数,但是spawn,OTOH接受要调用的程序,并接受命令行参数作为数组。
在您的情况下,Node.js尝试执行名为node ./modules/buttons.js
的程序,而不是node
作为命令行参数执行./modules/buttons.js
。这就是它失败的原因。
引用spawn
文档
const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);
exec
和spawn
之间的区别在于,exec
将默认在shell中启动命令,spawn
只是调用程序。
注意: BTW,因为您只是调用JavaScript文件,最好使用execFile