我目前正在Windows上学习nodejs。通过npm.cmd在全局安装了几个模块,nodejs无法找到已安装的模块。以玉为例
npm install jade -g
Jade安装在目录中"C:\Program Files (x86)\nodejs\node_modules",但以下代码将失败并显示"Cannot find module 'jade'"错误,
"C:\Program Files (x86)\nodejs\node_modules"
"Cannot find module 'jade'"
var jade = require('jade');
但是,在本地安装jade时,代码将成功运行(npm中没有- g选项)。我不想使用本地安装的模块,这对我来说是浪费磁盘空间。如何使全局安装的模块在Windows上工作?
添加一个名为的环境变量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)的“高级”选项卡中将其添加为系统变量。
NODE_PATH
%USERPROFILE%\Application Data\npm\node_modules
%AppData%\npm\node_modules
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中)。
PATH
node_modules
%AppData%\npm
旧故事
我本人对node.js相当陌生,因此我可能并不完全正确,但是根据我的经验,它是这样工作的: