spawn npm ENOENT解决方法

问题背景

学习nodejs想自己封装个自动初始化的一个工具,结果用到第三方子进程模块时出现的这个问题

报错

下面是出错的代码

module.exports = async name => {
    // 打印欢迎界面
    clear()
    const data = await figlet('KKB welocme')
    log(data)
    // 克隆项目
    await clone('github:*********************',name)

    // 安装依赖
    log('安装依赖')
    await spawn('npm', ['install'], { cwd: `./${name}` })
    log(chalk.green(`
        安装完成!
        To get start:
        =======================
        cd ${name}
        npm run server
        =======================
    `))
}


const spawn = function(...args){
    const {spawn} = require('child_process')
    return new Promise(resolve=>{
        const proc = spawn(...args)
        proc.stdout.pipe(process.stdout)
        proc.stderr.pipe(process.stderr)
        proc.on('close',()=>{
            resolve()
        })
    })
}

报错原因:在windows下npm的执行命令不同

解决

await spawn('npm', ['install'], { cwd: `./${name}` })

上面的这行代码做个判断就可以了

await spawn(process.platform === 'win32' ? 'npm.cmd' : 'npm', ['install'], { cwd: `./${name}` })
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容