节点child_process spawn给出错误代码-2 ENEONT



我试图做一个NPX命令,我可以在里面运行子命令

我的包。json本:

"bin": {
"malzahar": "./src/bin/malzahar.js"
},

这是我的malzahar.js代码:

#! /usr/bin/env node
import cp from 'child_process'
import yargs from 'yargs'
const argv = yargs(process.argv).argv
const command = argv._[2]
if (command == 'dev') {
// this works
cp.exec('babel-node ./node_modules/malzahar/src/entries/server.js')
// this gives error -2 ENOENT
cp.spawn('babel-node ./node_modules/malzahar/src/entries/server.js')
.on('error', function (error) {
console.log(error)
})
}

server.js文件只是启动一个基本的express服务器:

import express from 'express'
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

我可以让它工作时使用exec,但它不输出Example app listening on port 3000在终端

我读到它可能使用spawn工作,但当我使用spawn它给我错误代码-2 ENEONT:

Error: spawn babel-node ./node_modules/malzahar/src/entries/server.js ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn babel-node ./node_modules/malzahar/src/entries/server.js',
path: 'babel-node ./node_modules/malzahar/src/entries/server.js',
spawnargs: []
}

显然exec也是一个监听器

我让它工作使用这个:

const child = cp.exec('babel-node ./node_modules/malzahar/src/entries/server.js')
child.stdout.on('data', function (data) {
console.log(data)
})

相关内容

最新更新