已安装全局NPM程序包,但找不到命令



我已经通过命令行全局安装了两个npm包"download"one_answers"enigmavirtualbox":

npm install -g downloadnpm install -g engimavirtualbox

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

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

运行npm root -g生成C:Users<username>AppDataRoamingnpmnode_modules,在该文件夹中查看,我可以看到两个包的文件夹都存在。

我尝试过的:

  • 按此处所述更改npm root
  • 卸载并重新安装程序包
  • 添加环境。指向C:Users<username>AppDataRoamingnpmnode_modules的变量NODE_PATH
  • C:Users<username>AppDataRoamingnpmnode_modules添加到PATH环境中。变量

同样的设置在我的第二台计算机上运行(都运行Win7 64位)。我的节点安装有问题吗?或者我做错了什么?

可执行二进制文件和.cmd文件最终位于C:Users<username>AppDataRoamingnpm中(减去末尾的node_modules),因此将该路径添加到path环境中。variable解决了这个问题。

对于环境变量,路径可以缩写为:%appdatanpm

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

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

只需运行此命令

SET PATH=%AppData%npm;%PATH%

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

长话短说:
npm将.cmd文件保存在C:Users%username%AppDataRoamingnpm目录中(%username%是当前用户的用户名),当您从npm包执行命令时(所有操作都正常),该文件将被执行。

因为用户配置文件不一定在C:Users内部,所以最好使用一个变量,如指向当前用户的用户配置文件的%userprofile%或指向当前用户用户配置文件内部AppDataRoaming%APPDATA%
通过将CCD_ 21添加到CCD_。如果当前目录中不包含具有该名称的文件,则变量windows会自动在其中搜索具有您作为命令输入的名称的文件。

对于每个命令,npm文件夹中也有一个没有后缀的文件,这是一个bash脚本,在Windows上不起作用(如果你不使用bash),但Windows会先找到.cmd文件,所以你不必担心。

PATH环境变量设置为C:UsersYOUR_USERNAMEAppDataRoamingnpm。这帮我搞定了。

此处提供有关此主题的更多信息:https://medium.com/@alberto.schiabel/npm-ticks-part-1-get-list-of-globally-installed-packages-39a240347ef0

已在全球范围内安装的软件包列表

npm list -g --depth 0

适用于仍有丢失命令问题的用户。我已经处理了几个星期了,几乎放弃了在窗户上发展的希望。然后运行npm config list并发现:

; userconfig C:Usersdeane.npmrc
bin-links = false

需要把它变成真的。即使卸载和重新安装也无济于事,因为它会保留你的.npmrc文件。

为了在windows上使用npm install -g package-name,我们需要如上所述配置env变量。但是,如果您不想配置env变量,那么您可以使用yarn。如果你已经安装了纱线,那么运行

纱线全局添加包名称

如果你还没有安装yarn,那么你可以从这里安装通过MSI安装程序在Windows上安装Yarn

最新更新