子進程child
child_process介紹
使用
- 在package.json添加運行指令
{"scripts":{"start":"node start.js"}}
- 同package.json同級新建一個start.js文件
const{spawn}=require('child_process')constisWin32=process.platform==='win32'constchild=spawn(isWin32?'live-server.cmd':'live-server',{
cwd:'./'})// stdout 獲取標準輸出
child.stdout.on('data',data=>{console.log(`stdout:${data}`)})// stderr 獲取標準錯誤輸出
child.stderr.on('data',data=>{
console.error(`stderr:${data}`)})
child.on('close',code=>{
console.log(`子進程退出,退出碼:${code}`)downLiveServer()})
child.on('error',code=>{
console.log(`子進程錯誤,錯誤碼${code}`)// downLiveServer()})functiondownLiveServer(){// const child = spawn(isWin32 ? 'npm.cmd' : 'npm', ['install', '-D', 'live-server'])constchild=spawn(isWin32?'yarn.cmd':'yarn',['add','-D','live-server'])
child.stdout.on('data',data=>{
console.log(`live-server stdout: ${data}`)})
child.stderr.on('data',data=>{
console.log(`live-server stderr: ${data}`)})
child.on('close',code=>{
console.log(`live-server進程退出,退出碼:${code}`)})
child.on('error',code=>{
console.log(`live-server進程錯誤,錯誤碼${code}`)})}
遇到的問題
spawn中執行live-server命令時報錯 [Error: spawn ENOENT]” errors
原因:windows下live-server執行名不同
解決方案:
判斷是不是win32平台
const isWin32 = process.platform === 'win32’
不同平台使用不同命令,即 isWin32 ? 'live-server.cmd’ : 'live-server’
0條評論