我在生成 NodeJs 脚本时遇到错误:
exec('node ./modules/buttons', function(error, stdout, stderr) {
if(error) console.log(error);
console.log(stdout);
if(stderr) console.log(stderr);
});
Exec 工作得很好。然而产卵
var buttons = spawn('node ./modules/buttons.js', []);
buttons.stdout.on('data', function(data){
console.log(data);
});
给我以下错误:
spawn node ./modules/buttons.js ENOENT
定义脚本的绝对路径会导致相同的错误。如果有人能帮助我解决这个问题,我将不胜感激;我完全不知道这可能是什么原因,谷歌也没有帮助我。
最佳答案
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
code> 只是调用该程序。
注意:顺便说一句,由于您只是调用 JavaScript 文件,因此最好使用 execFile
关于node.js - NodeJs 产生 ENOENT 错误(Raspbian),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36640982/