错误:生成 npm ENOENT

Posted

技术标签:

【中文标题】错误:生成 npm ENOENT【英文标题】:Error: spawn npm ENOENT 【发布时间】:2017-08-31 00:26:12 【问题描述】:

我有一个 JS 应用程序。它在 linux 上运行良好,但在 windows 10 中出现错误。

events.js:161
  throw er; // Unhandled 'error' event
  ^

Error: spawn npm ENOENT
    at exports._errnoException (util.js:1028:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:359:16)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
    at Module.runMain (module.js:607:11)
    at run (bootstrap_node.js:422:7)
    at startup (bootstrap_node.js:143:9)
    at bootstrap_node.js:537:3

不正确的代码是这个

const spawn = require('child_process').spawn;

const watching = [
  // service: "babel-watch",
  service: "webpack-watch",
  // service: "sass-watch",
  service: "server-watch"
];

watching.forEach((service) => 
  const child = spawn('npm', ['run', service]);
  child.stdout.on('data', d => console.log(d.toString()));
  child.stderr.on('data', d => console.log(d.toString()));
);

我在github 中找到了这个错误的原因,我想问题是在 Windows 中无法正常工作的 spawn nodejs spawn Doc。但我不知道如何修改这段代码的 sn-p 以使其工作。有人可以帮我吗?

【问题讨论】:

在此处尝试建议:***.com/questions/27688804/… 和此处:***.com/questions/34208614/… 以获取有关错误的更多信息 您使用的是哪个 NodeJS 版本? @PramodPatil v7.6.0 【参考方案1】:

刚刚改了这一行

const child = spawn('npm', ['run', service]);

到这一行

  const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run',  service]);

如果 ti 的 windows 它运行 npm.cmd 如果它是 linux 则检查操作系统只是 npm

【讨论】:

你到底要去哪里添加这一行? event.js 文件? 奇怪,因为我可以在命令下正常调用 npm,但这肯定也解决了我的问题。救生员。 还使用 npx 为我解决了这个问题。【参考方案2】:

我知道有一个正确的答案而且这个问题已经存在了很长时间,我的解决方案是基于@Armen Sanoyan 和How do I determine the current operating system with Node.js的答案

对我来说,@Armen Sanoyan 的回答不起作用,但有很大帮助。我改变了这条线并工作。

const child = (process.platform === 'win32' ? 'npm.cmd' : 'npm') + ' run ' + service;

希望能帮到你。

【讨论】:

【参考方案3】:

我遇到了同样的问题。我的应用程序代码在 MAC 中运行良好,但在 Windows 中,它给出了与 spawn 命令相关的代码错误

使用command prompt运行时出现错误

当我使用GIT bash 启动应用程序时,没有发生错误。我不需要更改任何代码

【讨论】:

我还必须从代码存储库中删除 favicon.ico 文件,因为当我的本地 Windows 机器中存在此文件时,由于某些错误,我无法启动应用程序【参考方案4】:

我知道这似乎很明显,但请确保您没有将多个标志/选项放入单个字符串中:

// do not do this
spawn('pnpm', ['-r', 'exec', '--', 'pnpm version patch'])

// do this
spawn('pnpm', ['-r', 'exec', '--', 'pnpm', 'version', 'patch'])

【讨论】:

以上是关于错误:生成 npm ENOENT的主要内容,如果未能解决你的问题,请参考以下文章

npm ERR! code ENOENT npm ERR! syscall open npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file

Vue安装但-v和create不起作用

npm 错误!错误:生成 ENOENT

错误:生成 npm ENOENT

Cloud Functions 在 Windows 上的 lint 期间部署错误:“enoent ENOENT:没有这样的文件或目录”

npm install 生成大量错误