当前位置: 首页 > 知识库问答 >
问题:

错误:生成npm ENOENT

诸葛雨泽
2023-03-14

我有一个JS应用程序。它在linux上运行良好,但在Windows10中我遇到了一个错误。

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中找到了这个错误的原因,我想问题是spawn nodejs spawn Doc在windows中无法正常工作。但我不知道如何修改这段代码使其工作。有人能帮我吗?

共有3个答案

常英纵
2023-03-14

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

使用命令提示符运行时出错

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

姬和豫
2023-03-14

我知道有一个正确的答案,这个问题已经存在很长一段时间了,我的解决方案是基于@Armen Sanoyan的答案,以及如何使用Node确定当前的操作系统。js

对我来说,@Armen Sanoyan的答案不起作用,但帮助很大。我换了这条线和工作。

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

我希望我能帮忙。

冯开诚
2023-03-14

刚换了这条线

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

到这条线

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

即检查操作系统是否运行TI的windowsnpm.cmd是否运行linux只是npm

 类似资料:
  • 我有以下代码片段 我尝试运行应用程序时出现以下错误(部分) 似乎type="num "没有被处理。我怀疑年龄int也可能是一个问题,因为它是一个int,但需要一个string。从sting到int的反向转换也可能是一个问题。 任何帮助是值得赞赏的。 谢谢

  • 我尝试在android studio中创建我的第一个项目,使用我尝试运行应用程序的一个示例,但是gradle给了我这个构建错误(没有更改一行代码--只是尝试运行空活动): Gradle:Failure:生成失败,出现异常。*错误:任务“:PassiveLocation:PackageDebug”执行失败。

  • 我正在进行maven构建,但是它得到了一个与依赖项相关的错误。如果我(和其他开发人员)在我们的本地机器或其他linux服务器上构建它,它就不会出现任何问题。但是,在一个特定的linux服务器上,它在构建时会出现以下错误。 maven生成错误: [错误]无法对项目CorporateInterface执行目标:无法解析项目COM的依赖项。TravelLinck:CorporateInterface:W

  • 我正在ubuntu 14.04.4(spark版本:1.6.0和Scala代码运行器版本2.10.4)中使用命令构建Apache spark源代码 sudo SBT/SBT组件 并得到以下错误, [warn]def deterecurity(dir:TachyonFile,client:TachyonFS){ [warn]^ [错误] [错误]编译时:/home/ashish/spark-apps

  • 我正在尝试使用Eclipse为一个涉及Gazebo(一个流行的机器人模拟器)的项目进行开发。Gazebo提供了一个插件系统,允许与模拟器进行外部交互,并提供了一系列关于如何编写插件的教程。 在成功地学习了这些教程之后,我尝试将代码迁移到Eclipse,使用cmake-g“Eclipse cdt4-unix makefiles”[buildpath]生成一个Eclipse rpoject,然后将其导

  • 我创建了一个简单的. proto文件并执行了编译器(protoc-2.5.0rc1-win32.zip)。为规定的包生成了一个java文件。但是,生成的文件不会编译。. proto文件很简单,只有一条消息,其中包含一堆简单类型的可选字段(正确编号)。. java文件不编译,例如: 构造函数生成了消息。FieldAccessorTable(Descriptors.Descriptor,字符串[])未