当我试图像下面那样做时:
exec('test -e package.json && npm install', function (err, stdout, stderr) {...});
当文件不存在时,我收到错误。为什么?如何区分文件缺失时的实际执行错误?
更新:
从手册页: 测试实用程序评估表达式,如果计算结果为true,则返回零(true)退出状态;否则返回1(假)。如果没有表达式,test也会返回1(false)。
这是否意味着错误 - 纠正行为?是否可以检查文件,然后仅使用bash执行npm install
?
答案 0 :(得分:2)
执行时
test -e package.json && npm install
且package.json
不存在,则test
将失败,npm
将无法执行(因为&&
)并且整个表达式将被视为失败。 (这不应该是令人惊讶的;如果不是这样,你就不能做a && b && c
或a && b || c
之类的事情。)
因此,如果您希望整个表达式返回成功,则需要指出:
test -e package.json && npm install || true