gpt4 book ai didi

npm - 为什么我不能通过 child_process.exec 调用运行 npm install? npm exit 243 没有输出

转载 作者:行者123 更新时间:2023-12-05 04:49:46 26 4
gpt4 key购买 nike

我已经确定运行 npm install 手动工作:

# rm -r node_modules/
# npm install
npm WARN nextjs No repository field.
npm WARN nextjs No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 275 packages from 259 contributors and audited 276 packages in 14.233s

43 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities

# echo $?
0

如您所见,手动执行时退出代码 0。没有错误。

在我的例子中,package.json 看起来像这样:

{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"next": "^10.2.0",
"nprogress": "^0.2.0",
"postgres": "^2.0.0-beta.5",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"devDependencies": {
"@types/nprogress": "^0.2.0",
"@types/react": "^17.0.3",
"typescript": "^4.2.4"
}
}

但是,这样做并不像预期的那样工作:

# rm -r node_modules
# node my_script.js
err = Error: Command failed: npm install

at ChildProcess.exithandler (child_process.js:308:12)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5) {
killed: false,
code: 243,
signal: null,
cmd: 'npm install'
}
stdout =
stderr =

使用以下脚本,我希望它能工作::-(

const child_process = require('child_process')

child_process.exec('npm install', function (err, stdout, stderr) {
console.log('err =', err)
console.log('stdout =', stdout)
console.log('stderr =', stderr)
})

在不同的上下文中这是完全相同的命令,但会产生退出代码 243 而没有输出!

但是你猜怎么着!模块全部安装正确。只有退出代码和缺少输出是不好的。

现在我只是要忽略这个特定的退出代码,但我更愿意了解发生了什么。

为什么特别没有输出?甚至 child_process.exec('npm') 本身也不会产生任何输出。即使包装在 bash -c "... >> log 2>> log" 中也不会对 log 文件产生任何输出。我该怎么做才能解决这个问题?

即使使用 spawn(而不是 exec)也有同样的问题,即 npm 不产生任何输出。 child_process.spawn('bash', ['-c', "npm >> log 2>> log"]).on('error', console.log) 两个 npm --helpnpm install

最佳答案

事实证明,使用 snap 安装是个坏主意。

  1. 它有自动更新,这不利于生产。

  2. 由于某种原因,上述问题只发生在 snap 环境中。

    话虽如此,我对解决 snap 环境中问题的替代答案很感兴趣,因为 snap 和我试图运行的自动化可能有合法用途。

在 Linux 上安装最新版本的 Node.js 的更好方法:https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions

还有:https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04 (选项 2)

现在以正常方式安装了 Node.js,child_process.exec('npm', console.log) 将提供您期望的输出。

关于npm - 为什么我不能通过 child_process.exec 调用运行 npm install? npm exit 243 没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67475457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com