2014-02-20 99 views
0

我對node.js非常陌生, 我想創建一個node.js腳本,並在其中執行shell腳本。shell腳本node.js

這是我有的代碼。

var spawn = require('child_process').spawn 
var _ = require('underscore'); 
var deploySh = spawn('sh', [ 'vij.sh' ], { 
    cwd: process.env.HOME + '/u/qa/gv/node/scripts', 
    env:_.extend(process.env, { PATH: process.env.PATH + ':/usr/local/bin' }) 
}); 

當我嘗試執行它時,我面臨着下面的問題。誰可以幫我這個事?

node vijay 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: spawn ENOENT 
    at errnoException (child_process.js:988:11) 
    at Process.ChildProcess._handle.onexit (child_process.js:779:34) 
+1

您是否嘗試過使用'/ bin/sh'而不是'sh'? –

+0

你可以放下'sh'並使用'spawn('vij.sh')' - 確保vij.sh具有'#!/ bin/sh'作爲第一行。 –

+0

嗨,我在第一行有#!/ bin/sh。我修改了產卵,但我得到了同樣的問題。 – user3334590

回答

1

產卵抱怨它無法找到「上海」,用「慶典」,而不是(你可能還需要根據您的ENV設置指定的完整路徑腳本。)

所以我想嘗試:

  1. 產卵( '慶典',[ 'vij.sh'],...

  2. 產卵( '慶典',['/我的/路徑/到/維吉.sh'],...

  3. 產卵( '/我的/路徑/到/ vij.sh',[],...

0
var spawn = require('child_process').spawn 
var _ = require('underscore'); 
var deploySh = spawn('sh', [ 'vij.sh' ], { 
    // cwd: process.env.HOME + '/u/qa/gv/node/scripts', 
    env:_.extend(process.env, { PATH: process.env.PATH + ':/usr/local/bin' }) 
}); 

評論CWD:線上沒有。 4

直到現在我不知道什麼是process.env.HOME值,但這對我有效。