spawn npm ENOENT

Posted on 2019-12-18 17:18  勤勤恳恳大猿人  阅读(2827)  评论(0编辑  收藏  举报

今天在新clone的一个项目里,打包报如下错:

 

 

反复重新安装依赖,发现无济于事,可同事的机器运行不报错

检查代码发现:

const {spawn} = require('promisify-child-process');

Node.sj spawn函数可以用于调用系统上的命令,如在 Linux, macOS 等系统上

例如:

spawn('rm', ['-rf', deployDir])

spawn('mkdir', ['dist'])

 

...

同样的语句在 Windows 上执行则会报错

因为在 Windows 上,当我们执行  npm 时,我们实际执行的是  npm.cmd 批处理

解决方案:显式调用

spawn('cmd',['/c', 'npm'],['run', `build:${env}`]);

或者 shell: process.platform === 'win32'

spawn('git', args, {

   cwd: deployDir,

 shellprocess.platform === 'win32'

});

第三方库:cross-spawn

或者 

const spawn = require('hexo-util').spawn 
 
版本:(package.json)
"hexo-util": "^0.6.3"