错误:spawn npm ENOENT

16 浏览
0 Comments

错误:spawn npm ENOENT

我有一个JS应用程序,在Linux上运行良好,但在Windows 10上出现错误。

events.js:161
  throw er; // 未处理的“error”事件
  ^
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上找到了这个错误的原因,我猜问题出在nodejs spawn文档中,它在Windows上没有正确工作。但是我不知道如何修改这段代码使其正常工作。有人可以帮助我吗?

0
0 Comments

问题:(Error: spawn npm ENOENT)的出现原因和解决方法

当遇到(Error: spawn npm ENOENT)的错误时,其原因可能是由于Node.js无法找到npm命令的路径,导致无法执行相应的操作。

解决方法如下:

1. 确保已正确安装Node.js和npm:首先,确保已正确安装了Node.js和npm,并且其路径已正确配置。可以通过在终端或命令提示符中运行以下命令来检查其版本:

node -v
npm -v

2. 检查npm命令的路径配置:检查系统的环境变量配置中是否包含npm命令的路径。可以通过以下步骤进行检查和配置:

- Windows系统:在系统的环境变量配置中,确保npm的路径已添加到"Path"变量中。可以在"控制面板" -> "系统" -> "高级系统设置" -> "环境变量"中进行配置。

- macOS和Linux系统:在终端中运行以下命令,检查npm的路径是否已正确配置:

echo $PATH

如果npm的路径没有包含在输出结果中,可以通过编辑相应的配置文件(如.bashrc或.bash_profile)来添加路径。例如,在终端中运行以下命令:

nano ~/.bashrc

在打开的文件中添加以下行,并保存:

export PATH="/path/to/npm/bin:$PATH"

请将"/path/to/npm/bin"替换为实际的npm安装路径。

3. 检查npm命令是否可执行:确保npm命令具有可执行权限。可以通过以下命令为npm命令添加可执行权限:

chmod +x /path/to/npm/bin/npm

请将"/path/to/npm/bin/npm"替换为实际的npm安装路径。

4. 重启终端或命令提示符:在进行以上配置和更改后,重新启动终端或命令提示符,并再次尝试执行相关操作,查看是否仍然出现(Error: spawn npm ENOENT)的错误。

通过以上步骤,您应该能够解决(Error: spawn npm ENOENT)的问题,并成功执行npm相关操作。希望本文对您有所帮助!

0
0 Comments

(Error: spawn npm ENOENT) 这个问题的出现原因是在使用spawn函数时,将多个flags/options放在了一个字符串中,导致出现了错误。

解决方法是将flags/options分开放置,每个flag/option独占一个字符串。具体操作如下:

// 错误的写法
spawn('pnpm', ['-r', 'exec', '--', 'pnpm version patch'])
// 正确的写法
spawn('pnpm', ['-r', 'exec', '--', 'pnpm', 'version', 'patch'])

这样修改后,再次运行代码就可以避免出现(Error: spawn npm ENOENT)的错误了。

0
0 Comments

(Error: spawn npm ENOENT)问题的出现原因是在执行spawn命令时,无法找到npm路径。解决方法是通过判断操作系统类型来选择正确的npm路径。

具体来说,将原来的代码:

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

修改为:

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

这样的修改是通过检查操作系统类型,如果是Windows则运行npm.cmd,如果是Linux则运行npm。

需要在event.js文件中添加这行代码。

有人发现这个问题很奇怪,因为在命令行中可以正常调用npm,但是这个修改确实解决了问题,真是救命稻草。

另外,有人也通过使用npx解决了这个问题。

如果在整个项目中搜索到spawn(',按照这个答案的建议进行替换,也可以解决问题。

0