繁体   English   中英

Node.js-产生的进程正在生成错误“ execvp():没有这样的文件或目录”

[英]Node.js - spawned process is generating error “execvp(): No such file or directory”

我有以下旨在产生和分离子进程的代码,这只是同一目录中的另一个node.js脚本。 这是我正在运行的确切代码:

var fs = require('fs');
var child = require('child_process');

var out = fs.openSync('/tmp/daemon.log', 'a');
var options = {
    cwd: process.cwd(),
    env: process.env,
    detached: true,
    stdio: ['ignore', out, process.stderr]
};

child.spawn('/usr/local/bin/node ./daemon.js', [], options).unref();

daemon.js现在所做的所有daemon.js都是在两秒钟的超时后退出:

setTimeout(function() {
    console.log('done');
}, 2000);

如果我直接从终端运行daemon.js ,它将按预期工作。 如果我运行传递给child.spawn()的同一命令,它将按预期工作。 但是,当我运行脚本时,它将生成此错误:

execvp(): No such file or directory

似乎不是特定于node.js的,并且我在弄清楚问题出在哪里时遇到了麻烦。 有人有什么建议吗?

作为参考,这是在OS X 10.8.5服务器上,其节点使用Homebrew在路径/usr/local/Cellar/node/0.10.25/bin/node安装,并符号链接到/usr/local/bin/node

编辑

现在,代码可以完美运行,并且添加了avdantage,与运行主脚本的工作目录无关!

var fs = require('fs');
var child = require('child_process');

var out = fs.openSync('/tmp/daemon.log', 'a');
var options = {
    cwd: process.cwd(),
    env: process.env,
    detached: true,
    stdio: ['ignore', out, process.stderr]
};

child.spawn('/usr/local/bin/node', [__dirname + '/daemon.js'], options).unref();

尝试改变

child.spawn('/usr/local/bin/node ./daemon.js', [], options).unref();

至:

child.spawn('/usr/local/bin/node', ['./daemon.js'], options).unref();

要么:

child.spawn('node', ['daemon.js'], options).unref();

试一试

__dirname+'/daemon.js'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM