安装了全局 NPM 包但找不到命令

Global NPM package installed but command not found

我已经通过命令行全局安装了两个 npm 包 "download" and "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 并查看该文件夹内部我可以看到两个包的文件夹都存在。

我尝试过的:

相同的设置适用于我的第二台计算机(均为 运行 Win7 64 位)。是我的节点安装有问题,还是我做错了什么?

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

有了环境变量,路径可以简写:%appdata\npm.

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

npm config set prefix c:/Users/<username>/AppData/Roaming/npm

这里有关于这个主题的更多信息:https://medium.com/@alberto.schiabel/npm-tricks-part-1-get-list-of-globally-installed-packages-39a240347ef0

全局安装包列表

npm list -g --depth 0

将您的 PATH 环境变量设置为 C:\Users\YOUR_USERNAME\AppData\Roaming\npm。这为我修好了。

对于仍然遇到缺少命令问题的任何人。我已经处理这个问题几个星期了,几乎放弃了在 windows 上发展的希望。然后 运行 npm config list 发现了这个:

; userconfig C:\Users\deane\.npmrc
bin-links = false

需要将其更改为 true。即使卸载并重新安装也无济于事,因为它会保留您的 .npmrc 文件。

只需运行这个命令

SET PATH=%AppData%\npm;%PATH%

简答:将 %APPDATA%\npm 添加到 PATH 环境变量。

长答案:
npm 将 .cmd 文件保存在 C:\Users\%username%\AppData\Roaming\npm 目录(%username% 是当前用户名用户)。

因为用户配置文件不一定在 C:\Users 内部,所以最好使用 %userprofile% 之类的变量,它指向当前用户的用户配置文件,或者 %APPDATA% 指向 AppData\Roaming当前用户的用户配置文件。
通过将 %APPDATA%\npm 添加到 PATH 环境。如果当前目录不包含具有该名称的文件,变量 windows 会自动在那里搜索具有您作为命令输入的名称的文件。

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