Node.js在Windows上找不到已安装的模块

我目前正在Windows上学习nodejs。通过npm.cmd在全局安装了几个模块,nodejs无法找到已安装的模块。以玉为例

npm install jade -g

Jade安装在目录中"C:\Program Files (x86)\nodejs\node_modules",但以下代码将失败并显示"Cannot find module 'jade'"错误,

var jade = require('jade');

但是,在本地安装jade时,代码将成功运行(npm中没有-g选项)。我不想使用本地安装的模块,这对我来说是浪费磁盘空间。如何使全局安装的模块在Windows上运行?

L前端2020/03/23 09:26:46

以上所有答案均不适用于我。只是,最终工作的事情是添加%APPDATA%\ NPM环境Path变量,删除这两个文件纳克在C:\ Program Files文件\的NodeJS。

ng软件包未安装在C:\ Program Files \ nodejs \ node_modules中,因此很明显,无法使用nodejs目录中的ng二进制文件。

我不确定为什么要在此目录中搜索,因为我已经在C:\ Users \ MyUser中配置了-PATH环境变量-.npmrc-试图添加系统变量和/或NODE_PATH

西里神奇2020/03/23 09:26:46

如果您使用的是Windows,则需要执行以下步骤:1)创建一个名为package.json的文件

 {
  "name": "hello"
, "version": "0.0.1"
, "dependencies": {
    "express": "*"
  }
}

其中hello是软件包的名称,*表示依赖项的最新版本

2)代码到您的项目目录并运行以下命令

npm安装

它安装依赖项

伽罗小卤蛋米亚2020/03/23 09:26:46

只需下载并重新安装从节点,这将解决所有路径问题。

不要忘记重新启动命令提示符或终端。

2020/03/23 09:26:46

对于Windows 10,我必须在以下文件夹中本地安装gulp:

C:\ Users \ myaccount \ AppData \ Roaming \ npm \ node_modules

npm install gulp

这解决了我的“无法识别吞咽”的问题

Stafan2020/03/23 09:26:46

我偶然发现了这个问题,因为我想在装有Windows 10的新计算机上使用带有Visual Studio 2015的node.js。我在Windows 7、8和8.1上使用了node.js,从来没有问题的node.js找到模块。我使用旧版node.js 0.10.39,因为由于串行和RFXCOM模块,我必须使用此版本。

Windows 10的答案是使用C:\ Users \ User \ node_modules在环境变量中设置NODE_PATH。

GOJinJin2020/03/23 09:26:46

我有同样的问题,试图用安装凉亭 npm install -g bower

我认为这是因为节点是由另一个用户而非我安装的

我卸载了节点,然后重新安装了它。在安装过程中,我看到了添加到PATH> npm modules选项的文本

节点安装中的消息

在此处输入图片说明

安装节点后,我npm install -g bower再次执行现在凉亭起作用了。

当然不必像我一样用自己的用户重新安装节点。正如其他用户所解释的,解决方案必须通过NODE_PATHPATH变量进行。

这仅是为了说明仅当节点已由其他用户安装(或者在安装过程中未标记选项添加到PATH> npm modules时,才会出现此问题

猴子前端2020/03/23 09:26:46

或者,您可以添加到~/.npmrcright prefix我有C:\Program Files\nodejs64位Win7。

Tom理查德2020/03/23 09:26:46

我花了很多时间使全局模块起作用。最终,我C:\Users\yourusername\AppData\Roaming\npm在系统变量下显式添加了PATH变量。我还需要让此变量位于列表中的nodejs路径变量之前。

我正在运行Windows 10。

老丝乐2020/03/23 09:26:46

对我来说在Windows 10上工作 npm config set prefix %AppData%\npm\node_modules

A伽罗2020/03/23 09:26:46

我在Windows 7上运行时遇到此问题

npm install -g gulp

以管理员身份同时以普通用户身份登录。

解决方案:当以与普通用户相同的方式执行安装时(不是cmd的“以管理员身份运行”),一切都很好。我想这与默认的安装和搜索路径有关。

番长樱梅2020/03/23 09:26:46

从我对win8.1的经验来看,npm会在上安装模块,C:\Users\[UserName]\AppData\Roaming\npm\node_modules会在上 逐行搜索它们 C:\Users\[UserName]\node_modules

完整路径中的一个简单的解决方案参考模块:

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
西里米亚2020/03/23 09:26:46

对于Windows,每个人都说您应该为nodejs和npm模块设置环境变量,但是您知道为什么吗?对于某些模块,它们具有命令行工具,安装模块后,C:\ Program Files \ nodejs中有[module] .cmd文件,该文件用于在window命令中启动。因此,如果不将包含cmd文件的路径添加到环境变量%PATH%,则不会通过命令窗口成功启动它们。

凯西里2020/03/23 09:26:46

如果您使用的是Windows7平台,则应像这样更改NODE_PATH: %AppData%\npm\node_modules

猿逆天2020/03/23 09:26:46

我知道我可以唤醒僵尸,但是我认为这仍然是一个问题,如果您需要对Windows 7上的节点模块进行全局访问,则需要将其添加到全局变量路径中:

C:\Users\{USER}\AppData\Roaming\npm

重要提示:只有这个没有内容node_modules,我花了半个小时才看到这个。

Stafan路易2020/03/23 09:26:46

为了使其在Windows 10上正常工作,我通过将文件夹添加%USERPROFILE%\AppData\Roaming\npm到PATH来解决了该问题已经\node_modules附加这样的:%USERPROFILE%\AppData\Roaming\npm\node_modules\没有为我工作。

Gil伽罗小宇宙2020/03/23 09:26:46

为了简短起见,请npm link jade在您的应用目录中使用。

猴子村村2020/03/23 09:26:46

添加一个名为的环境变量NODE_PATH,并将其设置为%USERPROFILE%\Application Data\npm\node_modules(Windows XP),%AppData%\npm\node_modules(Windows 7/8/10)或npm最终在您的Windows风味上安装模块的位置。要一劳永逸地完成此操作,请在“系统属性”对话框(运行control.exe sysdm.cpl,System,3的“高级”选项卡中将其添加为系统变量

Windows 7+中的快速解决方案是仅运行:

rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules

值得一提的NODE_PATH是,仅在Node应用程序中导入模块时使用。如果要在CLI中使用全局安装的模块的二进制文件,则需要将其也添加到您的中PATH,但不添加任何node_modules部分(例如,%AppData%\npm在Windows 7/8/10中)。


旧故事

我本人对node.js相当陌生,因此我可能并不完全正确,但是根据我的经验,它是这样工作的:

  1. -g并不是安装全局库的方法,它只是将它们放置在系统路径上的一种方法,因此您可以从命令行调用它们,而无需编写它们的完整路径。它是有用的,例如,然后点应用的转换本地文件,如 -如果你安装它在全球范围,你可以在任何目录中使用它。
  2. node.js本身并未查看npm全局目录,而是使用另一种算法来查找所需文件:http : //nodejs.org/api/modules.html#modules_file_modules(基本上是从路径开始扫描每个文件夹从当前的node_modules文件夹中进行检查)。

有关更多详细信息,请参见类似的问题:如何使用npm全局安装模块?