已安装全局NPM软件包但未找到命令

ben*_*lum 29 windows batch-file package node.js npm

我通过命令行全局安装了两个npm软件包"download""enigmavirtualbox":

npm install -g downloadnpm install -g engimavirtualbox

我正在尝试在批处理文件中使用它们来捆绑我的节点项目中的单个.exe文件.对于这两者,这些命令npm list -g <packagename>产生相应的版本输出,与当前工作目录无关.

但是,在我的批处理脚本中,找不到命令"download"和"enigmavirtualbox".

运行npm root -g产量C:\Users\<username>\AppData\Roaming\npm\node_modules并查看该文件夹内部我可以看到两个包的文件夹都存在.

我尝试过的:

  • 更改npm root描述在这里
  • 卸载并重新安装软件包
  • 添加环境 变量NODE_PATH指向C:\Users\<username>\AppData\Roaming\npm\node_modules
  • 添加C:\Users\<username>\AppData\Roaming\npm\node_modules到PATH环境 变量

我的第二台计算机上运行相同的设置(均运行Win7 64位).我的节点安装有问题,或者我做错了什么?

ben*_*lum 48

可执行二进制文件和.cmd文件最终C:\Users\<username>\AppData\Roaming\npm(减去node_modules末尾),因此将该路径添加到PATH环境中.变量修复了这个问题.

  • 这可行,虽然使用通配符可能会更好:`%USERPROFILE%\ AppData\Roaming \npm`.该行必须在PATH env变量中的任何npm,node或nodejs路径之前,以便npm可以正确地找到您的全局包. (16认同)
  • mac 的路径是什么? (2认同)

Mr.*_*oob 5

如果上述方法不起作用,请使用此命令显式设置路径

npm config set prefix c:/Users/<username>/AppData/Roaming/npm
Run Code Online (Sandbox Code Playgroud)


tes*_*_22 5

只需运行这个命令

SET PATH=%AppData%\npm;%PATH%
Run Code Online (Sandbox Code Playgroud)


RC-*_*-14 5

简短回答:添加%APPDATA%\npm到环境变量中PATH

长答案:
npm 将.cmd当您从 npm 包执行命令时执行的文件(并且一切正常)保存在目录中C:\Users\%username%\AppData\Roaming\npm%username%是当前用户的用户名)。

因为用户配置文件不一定位于内部,C:\Users所以最好使用变量,例如%userprofile%指向当前用户的用户配置文件或%APPDATA%指向AppData\Roaming当前用户的用户配置文件内部。
通过添加%APPDATA%\npmPATH环境中。如果当前目录不包含具有该名称的文件,则变量 windows 会自动搜索具有您作为命令输入的名称的文件。

对于每个命令,npm 文件夹中还有一个不带后缀的文件,该文件是 bash 脚本,在 Windows 上不起作用(如果您不使用 bash),但 Windows 会.cmd首先找到该文件,因此您不必担心。