问题背景
学习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}` })