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上工作吗?

+0

http://*.com/questions/15471965/what-will-be-the-difference-in-requiremypackage-js-and-requiremypackage/15471995#15471995 – 2013-03-26 05:30:22

+0

@AmolMKulkarni:不知道如何是与此有关。在需求中添加'.js'并不能解决Windows上的问题。 – 2014-02-12 12:50:06

+1

@DanDascalescu:我想你误解了答案。该答案中给出的代码是Node.js的代码,它显示了它如何查找所需的包。因此,如果您了解在何处以及如何查找文件,则可以更轻松地解决您的问题。 – 2014-02-13 10:24:34

添加一个名为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自己,所以我可以不完全正确的,但根据我的经验是这样工作的:

  1. - g不是安装全局库的一种方式,它只是将它们放置在系统路径上的一种方式,因此您可以从命令行调用它们而不写入它们的完整路径。它是有用的,例如,然后点应用的转换本地文件,如 - 如果你安装它在全球范围,你可以在任何目录中使用它。
  2. node.js的本身不看故宫全球目录,它是使用另一种算法来寻找所需的文件:http://nodejs.org/api/modules.html#modules_file_modules(基本上它的每一个文件夹扫描路径,从目前开始为node_modules文件夹,并检查其)。

详情请参见类似的问题:How do I install a module globally using npm?

+17

非常感谢,您所提供的链接是非常有帮助的,我更清楚现在,虽然模块搜索算法看起来有点复杂。最后,我使用环境变量NODE_PATH引用全局模块路径,'设置NODE_PATH = C:\ Documents和Settings \ devuser的\应用数据\故宫\ node_modules',它按预期工作。这是奇怪的是,全球范围内安装的模块被定位在“%USERPROFILE%\应用数据\故宫\ node_modules”在Windows上,同时,也不能在NODE_PATH引号。 – Cosmore 2012-03-07 07:09:55

+2

很高兴为您提供帮助。没有改变NODE_PATH打破了标准node.js模块的路径,如FS? – 2012-03-07 08:27:41

+0

@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:

  1. Install it in both places. Seriously, are you that short on disk space? It’s fine, really. They’re tiny JavaScript programs.
  2. 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.
+0

感谢soemarko,它也能帮助我 – Cosmore 2012-03-07 07:28:42

+4

'它们很小的JavaScript程序.'其中一些库肯定不是很小! – UpTheCreek 2016-01-21 09:06:08

+1

@UpTheCreek我相信他指的是磁盘空间范围内的大小。他们是文本文件。它们客观上很小。 – 2016-02-16 16:12:11

要长话短说,在你的app目录使用npm link jade

+4

看来'npm link jade'不能在Windows上工作,npm返回错误信息如下:'npm ERR!错误:NPM链接不支持windows' – Cosmore 2012-03-07 06:36:28

+1

现在呢,作为版本v0.8.9 – 2012-09-24 09:50:45

+0

@beyonddoor:您需要从管理员命令窗口中运行'NPM link'。 – Mrchief 2013-08-23 13:57:00

,如果你使用的是Windows,它需要一些步骤, 1)创建一个名为包文件。JSON

{ 
    "name": "hello" 
, "version": "0.0.1" 
, "dependencies": { 
    "express": "*" 
    } 
} 

其中你好是软件包的名称,*表示最新版本的依赖

2)代码,您的项目目录,并运行以下命令

NPM安装

它安装的依赖关系

+4

这不会在全球安装(问题提示)。这将依赖关系拉入应用程序 – bryanmac 2014-02-17 14:10:21

如果你在Windows7平台,也许你应该改变NODE_PATH像这样: %AppData%\npm\node_modules

+7

它在** appdata \漫游**在Windows 8以及 – 2014-05-13 15:05:51

+5

%AppData%包含该路径.. – Juan 2014-09-01 13:32:33

+6

我在Windows 8.1与npm 2.5.1,并且我有我的NODE_PATH设置为记录,但它仍然无法找到我安装的软件包。思考? – JaKXz 2015-02-26 16:00:24

或者,您可以添加到~/.npmrcprefix。我有C:\Program Files\nodejs为64 Win7。

从我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部分,我花了半小时看到这一点。

+3

或者,对于Windows 8用户 %USERPROFILE%\ AppData \ Roaming \ npm – Benson 2015-11-09 23:51:05

+2

感谢关于删除'node_modules'部分的建议,也在为此而苦恼! – danguilherme 2016-09-09 18:10:47

我就遇到了这个问题,在Windows 7上运行

npm install -g gulp 

以管理员身份同时被登录为普通用户。

解决方案:当执行与普通用户相同的安装(不是“以管理员身份运行”为cmd)一切正常。我想它与默认的安装和搜索路径有关。

+1

澄清这一点多一点... 当Node以管理员身份安装时,它会更新系统路径以包含对管理员全局节点模块文件夹的引用。当新用户全局安装某些东西时,它会安装到不同的节点模块文件夹。安装节点的用户以外的每个用户都需要更新其路径以包含其全局节点模块文件夹。 如果您在同一个帐户上安装并使用节点,则不需要此操作。 – dpsthree 2015-10-22 15:39:57

+0

Windows 8.1 pro with nodejs v6.9.4,设置路径运行:C:\ Program Files \ nodejs \ nodevars.bat – Robot70 2017-03-06 14:14:04

尝试添加/编辑环境变量和得出的结论是:

  1. 修改/添加User variables(上框的)代替System variables(下部);否则你必须“以管理员身份运行”才能使其工作。
  2. 附加;%AppData%\npmPath为了使用它作为命令行工具(如果支持,如jshintgrunt-cli)。
  3. 创建NODE_PATH并将其设置为%AppData%\npm\node_modules,以便在脚本中将其安装到项目目录中而不将其安装到require('<pkg_name>')。 (但npm link is suggested这一要求,如果你的工作与OS mklink如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。

+1

呃,没有。 (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\不适合我。

+0

它正在工作.. – 2016-10-27 05:13:57

+3

或者,更简单地说,'%AppData%\ npm \' – 2017-03-30 08:53:18

+0

男人这很奇怪,工作!字面上,我一直在狩猎这个问题两天。这是我尝试过的最晦涩的解决方案,也是第一个有效的解决方案。非常感谢。 – 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

+0

这是唯一的工作对我来说。在Windows 8上运行 – 2017-06-13 10:19:16

我有同样的问题,试图与npm install -g bower

我想这是因为节点被其他用户安装,不是我安装亭子。

我卸载了节点,然后重新安装了它。在安装过程中,我看到这个文本选项添加到PATH> NPM模块

消息在节点安装

enter image description here

节点安装完毕后,我再次执行npm install -g bower。现在凉亭的作品。

当然不能与自己的用户,像我这样的需要,重新安装节点。解决方案必须通过NODE_PATHPATH变量,其他用户已经解释。

这只是为了说明仅当节点已由其他用户安装时(或者如果在安装期间选项添加到PATH> npm模块尚未标记),才会发生此问题。

只需从this下载并重新安装节点,这将解决所有路径问题。

不要忘记重新启动您的命令提示符或终端。