我目前正在 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
PATH
node_modules``%AppData%\npm
老故事
我自己对 node.js 非常陌生,所以我可能并不完全正确,但根据我的经验,它是这样工作的: