我有下面的代碼,用於產生和分離一個子進程,這只是另一個node.js腳本在同一個目錄。下面是我運行的確切代碼:Node.js - 產生的進程正在產生錯誤「execvp():沒有這樣的文件或目錄」
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
做現在的問題是兩秒鐘的超時後退出:
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();
我試着定義腳本的文件名爲: 'var filename = process.cwd()+'/daemon.js';' 並註銷以確保它是正確的,但仍然是相同的錯誤。 – Adam