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

节点和npm已安装,但Git bash无法识别'npm run dev'中的'节点'(其他shell工作正常)

常俊侠
2023-03-14

我已经安装了npm和node(在Windows和direct安装中尝试了NVM)。

当运行'npm-v'或'节点-v'在Git Bash一切正常。但是当我尝试运行'npm run dev'(或任何其他命令)时,输出结果显示'节点命令不被识别'。

在其他外壳(CMD/Powershell)中,一切工作正常。

我检查了Windows中的路径变量,Git Bash中的路径变量,一切似乎都是正确的。

错误截图路径变量截图

路径变量cmd/Procmon

任何帮助赞赏。

p、 当我试图找到答案的时候,我从@jameseg那里看到了同样的问题,也许如果他看到这个问题,他会有所帮助。

共有1个答案

慕皓君
2023-03-14

您的PATH环境变量非常混乱。它有重复的条目,还有一个条目C:\ProgramFiles\nodejs\node。exe无效,因为它应该是文件夹,而不是文件,并且具有

但主要的问题是,它在C:\ProgramFiles\Java\jdk-13.0之后有一个零散的双引号。1\bin

有了这个,它之后的所有路径实际上都被忽略了,因为它们被视为一个大引用字符串的一部分(由变量数据的末尾隐式终止)。

为了说明我的意思,考虑这个例子:

此正确的路径变量。。。

C:\a;C:\b;"C:\c 123";C:\d;C:\e

...被解释为:

C:\a
C:\b
C:\c 123
C:\d
C:\e

但是,这个糟糕的路径变量删除了其中一个引号。。。

C:\a;C:\b;C:\c 123";C:\d;C:\e

...是这样解释的:

C:\a
C:\b
C:\c 123";C:\d;C:\e

这在一开始可能只有一半的意义,但这是因为Windows解析这个变量的方式很奇怪:当遇到双引号时,它会从结果中删除,但会切换一个标志,表明我们现在是否在一个带引号的字符串中。当设置标志时,分号将被忽略。因此,即使杂散引用位于路径的末端(或者在其中间),它将基本上引用变量数据的其余部分直到下一个双引号或数据的结尾。

令人困惑的是,您可能仍然有其中节点报告它找到了节点,因为where.exe工具以稍微不同的方式进行自己的解析(忽略引号),所以您不能依赖它的输出!(例如,尝试set PATH=c:\win"dows其中资源管理器会说找不到,但资源管理器将工作以打开资源管理器。你得到相反的东西,如set PATH=x"y; c:\windows-其中资源管理器将列出c:\windows\explorer.exe,但资源管理器将不起作用。)它在Git Bash中工作的原因可能是相同的:当环境变量被翻译成UNIX路径时,它们的解析与Windows本身的解析略有不同,无意中纠正了过程中有问题的条目。

因此,解决方案是从path变量中删除这个双引号。

 类似资料:
  • 问题内容: Node JS和NPM之前运行良好。最近,我重新安装了Node JS,NPM,问题开始了。在我安装了例如example 的模块后,该模块安装成功,但给出 ‘bower’不被识别为内部或外部命令,可操作程序或批处理文件。 我已经检查了所有旧模块的安装路径 。我试图卸载它们并重新安装模块,但是仍然出现相同的错误。 甚至我都删除了整个文件夹并再次安装了所有模块,但是结果是一样的。 我不知道为

  • 我已经做了很多研究,但在这里空空如也。这是一个又长又丑的IMO。我绝对可以浏览到并成功下载错误中首次引用tar.gz。我所有其他的NPM安装都运行良好。我不是SQLite3的超级粉丝,但我有一个项目需要演示给一些同事。任何帮助得到安装将非常感谢。 sqlite3@3.1.6安装C:\ws\linked10\linkedout\node_modules\sqlite3 node-pre-gyp安装-

  • 我尝试在Windows 10上安装Node时遇到一些问题,并找到了解决方案。 错误如下: C:\Users\Stephan 解决方案如下。

  • 我有一个很多人都有的错误,我认为我在这里找到了一个解决方案。本质上,它是说我的节点版本与node-sass版本不兼容。很多人都有同样的问题,所以我相信链接会有所帮助。然而,当我运行npm安装node-sass@4.14.1时,我得到了一个不同的错误。我知道这是一些简单的修复,但我找不到它!有人明白这是怎么回事吗?