我正在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上运行?
答案 0 :(得分:325)
添加一个名为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
部分(例如Windows 7/8/10中的%AppData%\npm
)。
旧故事
我自己对node.js很陌生,所以我可能不完全正确,但从我的经验来看,它是这样的:
有关详细信息,请参阅类似问题:How do I install a module globally using npm?
答案 1 :(得分:33)
如果您在windows7平台上,也许您应该像这样更改NODE_PATH:
%AppData%\npm\node_modules
答案 2 :(得分:26)
我知道我可以唤醒一个僵尸,但我认为这仍然是一个问题,如果你需要在Windows 7上全局访问节点模块,你需要将它添加到你的全局变量路径:
C:\Users\{USER}\AppData\Roaming\npm
重要提示:只有这个没有node_modules
部分,我花了半个小时才能看到这个。
答案 3 :(得分:16)
为了使它在Windows 10上运行,我通过将文件夹%USERPROFILE%\AppData\Roaming\npm
添加到我的PATH来解决它。像这样添加\node_modules
:%USERPROFILE%\AppData\Roaming\npm\node_modules\
对我不起作用。
答案 4 :(得分:12)
我将引用此节点的blog post ...
一般来说,经验法则是:
- 如果您正在安装要在程序中使用的东西,请使用require('whatever'),然后在本地安装它。 你的项目。
- 如果您要在shell中安装要在shell中使用的东西,请在命令行或其他地方安装,以便全局安装,以便 二进制文件最终在您的PATH环境变量中。
...
当然,在某些情况下,您希望同时执行这两项操作。 Coffee-script和Express都是具有的应用程序的好例子 命令行界面,以及库。在那些情况下,你可以 执行以下操作之一:
- 在两个地方安装它。说真的,你的磁盘空间不足吗?这很好,真的。他们是一个很小的JavaScript程序。
- 全局安装,然后npm link coffee-script或npm link express(如果你在支持符号链接的平台上)。然后 您只需要更新全局副本以将所有符号链接更新为 好。
醇>
答案 5 :(得分:10)
要简短,请在您的应用目录中使用npm link jade
。
答案 6 :(得分:8)
尝试添加/编辑环境变量并得出结论:
User variables
(上方框)而不是System variables
(下方);否则你必须以管理员身份运行"让它发挥作用。;%AppData%\npm
附加到Path
,以便将其用作命令行工具(如果受支持,例如jshint
和grunt-cli
)。NODE_PATH
并将其%AppData%\npm\node_modules
设置为脚本中的require('<pkg_name>')
,而无需将其安装在项目目录中。 (但npm link
is suggested如果您正在使用mklink
等操作系统,例如Vista和更新版本,则需要see here。)测试环境:
答案 7 :(得分:5)
我在Windows 7上遇到了这个问题,正在运行
length
以普通用户身份登录时以管理员身份。
解决方案:当执行与普通用户相同的安装时(不是“以管理员身份运行”为cmd)一切都很好。我想这与默认的安装和搜索路径有关。
答案 8 :(得分:5)
我有一个糟糕的时间让全球模块工作。最后,我明确地将C:\Users\yourusername\AppData\Roaming\npm
添加到系统变量下的PATH变量中。我还需要将此变量放在列表中的nodejs path变量之前。
我正在运行Windows 10。
答案 9 :(得分:3)
根据我对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");
答案 10 :(得分:3)
对于windows,每个人都说你应该为nodejs和npm模块设置环境变量,但是你知道为什么吗? 对于某些模块,他们有命令行工具,安装模块后, [模块] .cmd 文件在 C:\ Program Files \ nodejs 中,并且使用它用于在window命令中启动。因此,如果不将包含cmd文件的路径添加到环境变量%PATH%,则不会通过命令窗口成功启动它们。
答案 11 :(得分:2)
我遇到了同样的问题,尝试使用npm install -g bower
我认为这是因为节点是由其他用户安装的,而不是我。
我卸载了节点,然后重新安装了它。在安装过程中,我看到了这个选项 Add to PATH&gt;的文本。 npm模块:
节点安装中的消息
安装节点后,我再次执行npm install -g bower
。现在凉亭工作了。
当然没有必要像我一样用自己的用户重新安装节点。解决方案必须通过 NODE_PATH 或 PATH 变量,正如其他用户所解释的那样。
这只是说明只有在另一个用户安装了节点时才会出现此问题(或者如果在安装过程中没有标记选项添加到PATH&gt; npm模块)。
答案 12 :(得分:1)
或者,您可以添加到~/.npmrc
右prefix。 64 Win7我得C:\Program Files\nodejs
。
答案 13 :(得分:1)
我偶然发现了这个问题,因为我想在带有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。
答案 14 :(得分:1)
对于Windows 10,我必须在文件夹中本地安装gulp:
C:\ Users \用户我的账户\应用程序数据\漫游\ NPM \ node_modules
npm install gulp
这解决了我的“gulp无法识别”的问题
答案 15 :(得分:1)
对我来说,我在Windows 10 npm config set prefix %AppData%\npm\node_modules
答案 16 :(得分:0)
只需从this下载并重新安装该节点,这将解决所有路径问题。
不要忘记重启命令提示符或终端。
答案 17 :(得分:0)
以上所有答案均不适用于我。最终唯一可行的方法是将%AppData%\ npm添加到环境Path变量 AND 中,以删除C:\ Program Files \ nodejs中的两个ng文件。
ng包未安装在C:\ Program Files \ nodejs \ node_modules中,因此很明显,使用nodejs目录中的ng二进制文件将无效。
我不确定为什么要在此目录中搜索,因为我已经配置了 -PATH环境变量 -C:\ Users \ MyUser中的.npmrc -尝试添加系统变量和/或NODE_PATH
答案 18 :(得分:-4)
如果您使用的是Windows,则需要一些步骤, 1)创建一个名为package.json的文件
{
"name": "hello"
, "version": "0.0.1"
, "dependencies": {
"express": "*"
}
}
其中hello是包的名称,*表示依赖项的最新版本
2)项目目录的代码并运行以下命令
npm install
安装依赖项