【发布时间】:2022-12-07 01:43:40
【问题描述】:
我正在尝试制作一个 npx 命令,我可以在其中运行子命令
我的 package.json bin:
"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 文件只是启动一个基本的快速服务器:
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: []
}
【问题讨论】:
标签: javascript node.js