在gulp任务中从Node child_process exec发出运行NPM更新命令

时间:2016-03-22 14:29:49

标签: node.js npm gulp child-process

我正在使用gulp任务来构建和部署多个项目/应用程序。此任务的其中一个步骤是为每个应用程序运行npm update,因此我使用节点child_process exec语句在相关的应用程序工作目录中运行此命令:

exec('npm update', {cwd:'./appfolder}, function (err) {...});

我没有遇到任何问题,并且它正常工作,直到一个特定的npm更新发出以下错误(为了清楚起见缩写为......)

npm ERR! argv "C:\\Program Files (x86)\\nodejs\\node.exe" "...\\npm\\node_modules\\npm\\bin\\npm-cli.js" "update"
npm ERR! node v5.6.0
npm ERR! npm  v3.3.4
npm ERR! path ...\node_modules\uglify-js\node_modules\async
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall rename

npm ERR! enoent ENOENT: no such file or directory, rename '...\appfolder\node_modules\uglify-js\node_modules\async' -> '....\appfolder\node_modules\gulp-uglify\node_modules\async'

确实,'...\appfolder\node_modules\uglify-js\node_modules\async'目录不存在,所以在绝望中我试图在命令行中手动运行npm update,奇怪的是这有效!

那么为什么从gulp任务中的child_process exec语句运行npm更新不起作用?仅供参考,我正在以管理员身份运行的命令行运行gulp任务。因此,我认为必要的权利正在从命令行转移到gulp到child process execnpm update。或者可能不是!!哦,这是在Windows上运行。

0 个答案:

没有答案