gpt4 book ai didi

windows - Nodejs 在 Windows 上找不到已安装的模块

转载 作者:IT老高 更新时间:2023-10-28 21:45:13 24 4
gpt4 key购买 nike

我目前正在 Windows 上学习 nodejs。使用 npm.cmd 全局安装了几个模块,nodejs 找不到安装的模块。以 Jade 为例,

npm install jade -g

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)。

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 不是一种安装全局库的方法,它只是一种将它们放在系统路径上的方法,因此您可以从命令行调用它们而无需编写它们的完整路径。它很有用,例如, Node 应用程序正在转换本地文件,例如 less - 如果您将其安装在全局范围内,则可以在任何目录中使用它。
  2. node.js 本身并没有查看 npm 全局目录,它正在使用另一种算法来查找所需的文件:http://nodejs.org/api/modules.html#modules_file_modules (基本上它扫描路径中的每个文件夹,从当前的 node_modules 文件夹开始并检查它)。

查看类似问题了解更多详情:How do I install a module globally using npm?

关于windows - Nodejs 在 Windows 上找不到已安装的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com