簡體   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