我现在正在Windows上学习nodejs。使用npm.cmd全局安装了几个模块,nodejs找不到已安装的模块。以玉石为例,
npm install jade -g
Jade安装在目录中"C:\Program Files (x86)\nodejs\node_modules"
,但以下代码将失败并显示"Cannot find module 'jade'"
error,
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
).
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 还很陌生,所以我可能不完全正确,但根据我的经验,它是这样工作的:
-
-g不是安装全局库的方法,它只是将它们放在系统路径上的一种方法,这样您就可以从命令行调用它们,而无需写入它们的完整路径。它很有用,例如,然后节点应用程序正在转换本地文件,例如less— 如果您全局安装它,您可以在任何目录中使用它。
- Node.js 本身没有查看 npm 全局目录,它使用另一种算法来查找所需的文件:http://nodejs.org/api/modules.html#modules_file_modules http://nodejs.org/api/modules.html#modules_file_modules(基本上它扫描路径中的每个文件夹,从当前的开始节点模块文件夹并检查它)。
有关更多详细信息,请参阅类似问题:如何使用 npm 全局安装模块? https://stackoverflow.com/questions/5817874/node-js-npm-is-not-installing-module-in-the-default-path
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)