Nodejs在Windows上找不到已安装的模块?
我在Windows上学习nodejs。几个模块全局安装在npm.cmd中,而nodejs无法找到已安装的模块。以玉例如,Nodejs在Windows上找不到已安装的模块?
npm install jade -g
玉安装在目录"C:\Program Files (x86)\nodejs\node_modules"
,但下面的代码将失败,"Cannot find module 'jade'"
错误,
var jade = require('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
时才使用。当你想在你的CLI使用全球的装机量模块的二进制文件,你还需要将其添加到您的PATH
,但没有node_modules
部分(例如%AppData%\npm
在Windows 10年7月8日)。
老故事
我非常新的Node.js自己,所以我可以不完全正确的,但根据我的经验是这样工作的:
- - g不是安装全局库的一种方式,它只是将它们放置在系统路径上的一种方式,因此您可以从命令行调用它们而不写入它们的完整路径。它是有用的,例如,然后点应用的转换本地文件,如少 - 如果你安装它在全球范围,你可以在任何目录中使用它。
- node.js的本身不看故宫全球目录,它是使用另一种算法来寻找所需的文件:http://nodejs.org/api/modules.html#modules_file_modules(基本上它的每一个文件夹扫描路径,从目前开始为node_modules文件夹,并检查其)。
非常感谢,您所提供的链接是非常有帮助的,我更清楚现在,虽然模块搜索算法看起来有点复杂。最后,我使用环境变量NODE_PATH引用全局模块路径,'设置NODE_PATH = C:\ Documents和Settings \ devuser的\应用数据\故宫\ node_modules',它按预期工作。这是奇怪的是,全球范围内安装的模块被定位在“%USERPROFILE%\应用数据\故宫\ node_modules”在Windows上,同时,也不能在NODE_PATH引号。 – Cosmore 2012-03-07 07:09:55
很高兴为您提供帮助。没有改变NODE_PATH打破了标准node.js模块的路径,如FS? – 2012-03-07 08:27:41
@beyonddoor任何有关伊万诺夫的问题? – pilau 2013-07-25 11:02:14
我就从这个节点的blog post报价...
In general, the rule of thumb is:
- If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of your project.
- If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its binaries end up in your PATH environment variable.
...
Of course, there are some cases where you want to do both. Coffee-script and Express both are good examples of apps that have a command line interface, as well as a library. In those cases, you can do one of the following:
- Install it in both places. Seriously, are you that short on disk space? It’s fine, really. They’re tiny JavaScript programs.
- Install it globally, and then npm link coffee-script or npm link express (if you’re on a platform that supports symbolic links.) Then you only need to update the global copy to update all the symlinks as well.
感谢soemarko,它也能帮助我 – Cosmore 2012-03-07 07:28:42
'它们很小的JavaScript程序.'其中一些库肯定不是很小! – UpTheCreek 2016-01-21 09:06:08
@UpTheCreek我相信他指的是磁盘空间范围内的大小。他们是文本文件。它们客观上很小。 – 2016-02-16 16:12:11
,如果你使用的是Windows,它需要一些步骤, 1)创建一个名为包文件。JSON
{
"name": "hello"
, "version": "0.0.1"
, "dependencies": {
"express": "*"
}
}
其中你好是软件包的名称,*表示最新版本的依赖
2)代码,您的项目目录,并运行以下命令
NPM安装
它安装的依赖关系
这不会在全球安装(问题提示)。这将依赖关系拉入应用程序 – bryanmac 2014-02-17 14:10:21
从我expierience与win8.1 NPM安装在 C:\Users\[UserName]\AppData\Roaming\npm\node_modules
模块,但dumply搜索他们 C:\Users\[UserName]\node_modules
。
var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
我知道我可以清醒了僵尸,但我认为这仍然是一个问题,如果你需要节点模块的全球访问在Windows 7你:在通过完整路径应用
一个简单的解决方案参考模块要添加到您的全局变量路径:
C:\Users\{USER}\AppData\Roaming\npm
重要:只有这个没有node_modules
部分,我花了半小时看到这一点。
或者,对于Windows 8用户 %USERPROFILE%\ AppData \ Roaming \ npm – Benson 2015-11-09 23:51:05
感谢关于删除'node_modules'部分的建议,也在为此而苦恼! – danguilherme 2016-09-09 18:10:47
我就遇到了这个问题,在Windows 7上运行
npm install -g gulp
以管理员身份同时被登录为普通用户。
解决方案:当执行与普通用户相同的安装(不是“以管理员身份运行”为cmd)一切正常。我想它与默认的安装和搜索路径有关。
尝试添加/编辑环境变量和得出的结论是:
- 修改/添加
User variables
(上框的)代替System variables
(下部);否则你必须“以管理员身份运行”才能使其工作。 - 附加
;%AppData%\npm
到Path
为了使用它作为命令行工具(如果支持,如jshint
和grunt-cli
)。 - 创建
NODE_PATH
并将其设置为%AppData%\npm\node_modules
,以便在脚本中将其安装到项目目录中而不将其安装到require('<pkg_name>')
。 (但npm link
is suggested这一要求,如果你的工作与OSmklink
如Vista和更高版本。)
测试环境:
- 的Win 7(耳鼻喉科,64位,SP1) Node.js 4.2。4,NPM 12年2月14日
- 赢8.1(ENT。,64位),Node.js的0.10.30,NPM 1.4.21
对于Windows,大家都说你应该设置环境变量和的NodeJS npm模块,但是你知道为什么吗? 对于某些模块,他们有命令行工具,安装完模块后,有[module] .cmd文件在C:\ Program Files \ nodejs,它用于在window命令中启动。因此,如果不将包含cmd文件的路径添加到环境变量%PATH%,则不会通过命令窗口成功启动它们。
我无意中发现这个问题,因为我想我的新电脑上使用Visual Studio 2015年使用Node.js的与Windows 10.我用Windows 7和8和8.1不再是问题的node.js node.js中找到一个模块。我使用的是legacy.js 0.10.39,因为我必须使用这个版本,因为串口和RFXCOM模块。
为窗10的答案是设置在NODE_PATH与C环境变量:\用户\用户\ node_modules。
呃,没有。 (Windows 10在这里..)我看到一些模块在'C:\ Users \ User \ node_modules'我看到一些模块在'C:\ Users \ User \ AppData \ Roaming \ npm \ node_modules'我看到一些模块'C :\ Users \ User \ node_modules'也位于'C:\ Program Files文件(x86)\ nodejs \ node_modules \ npm \ node_modules'不知道这是怎么发生的。哪个是哪个,为什么他们这样做? – zipzit 2016-02-27 09:19:00
为了使其在Windows 10我的文件夹%USERPROFILE%\AppData\Roaming\npm
添加到我的PATH解决它。有\node_modules
追加像这样:%USERPROFILE%\AppData\Roaming\npm\node_modules\
不适合我。
它正在工作.. – 2016-10-27 05:13:57
或者,更简单地说,'%AppData%\ npm \' – 2017-03-30 08:53:18
男人这很奇怪,工作!字面上,我一直在狩猎这个问题两天。这是我尝试过的最晦涩的解决方案,也是第一个有效的解决方案。非常感谢。 – Will 2017-05-11 14:18:43
对于Windows 10,我必须在文件夹中本地安装一饮而尽:
C:\用户\我的账户\应用程序数据\漫游\故宫\ node_modules
npm install gulp
这个固定的“一口我的问题无法识别”
我有一个可怕的时间获得全球模块的工作。最后,我明确地将C:\Users\yourusername\AppData\Roaming\npm
添加到系统变量下的PATH变量中。我还需要将此变量放在列表中的nodejs路径变量之前。
我运行Windows 10
这是唯一的工作对我来说。在Windows 8上运行 – 2017-06-13 10:19:16
http://stackoverflow.com/questions/15471965/what-will-be-the-difference-in-requiremypackage-js-and-requiremypackage/15471995#15471995 – 2013-03-26 05:30:22
@AmolMKulkarni:不知道如何是与此有关。在需求中添加'.js'并不能解决Windows上的问题。 – 2014-02-12 12:50:06
@DanDascalescu:我想你误解了答案。该答案中给出的代码是Node.js的代码,它显示了它如何查找所需的包。因此,如果您了解在何处以及如何查找文件,则可以更轻松地解决您的问题。 – 2014-02-13 10:24:34