2013-08-25 54 views
0

當我試圖做的像水木清華如下:節點EXEC`測試-e`命令

exec('test -e package.json && npm install', function (err, stdout, stderr) {...}); 

當文件不存在,我發現了一個錯誤。爲什麼?如何區分文件不存在的真實執行錯誤?

更新

從手冊頁: 的測試效用計算表達式,如果結果爲真,返回零(真)退出狀態;否則返回1(false)。如果沒有表達式,測試也返回1(false)。

這是否意味着錯誤正確的行爲?是否有可能檢查文件,然後使用bash執行npm install

+0

當你在bash中直接運行它會發生什麼? –

+0

沒有,沒有錯誤,如果文件不存在。 'npm install'不會執行。 – ValeriiVasin

+0

嘗試使用絕對路徑。 ''文件不存在''錯誤意味着該文件不存在。很可能你正在另一個目錄中工作。所以,是的,嘗試測試絕對路徑。也''-e''國旗可能不是你正在尋找..你正在尋找'''-f'' –

回答

2

當你執行

test -e package.json && npm install 

package.json不存在,那麼test會失敗,npm不會執行(因爲&&)和整個表達式將被視爲失敗。 (這並不奇怪,如果不是的話,你不可能做這樣的事情a && b && ca && b || c。)

所以,如果你想整個表達式返回成功,你需要指出:

test -e package.json && npm install || true 
+0

感謝您解釋它的預期行爲以及如何克服此問題:) – ValeriiVasin