Nodejs在Windows上找不到安装的模块?

我正在学习Windows上的nodejs。 几个模块全局安装在npm.cmd中,nodejs无法find已安装的模块。 以玉为例,

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的环境variables,并将其设置为%USERPROFILE%\Application Data\npm\node_modules (Windows XP), %AppData%\npm\node_modules (Windows 7/8/10)或npm最终安装模块你的Windows风格。 要做到这一点,在系统属性对话框(运行control.exe sysdm.cpl,System,3 )的高级选项卡中添加此作为一个系统variables。

在Windows 7 +快速解决scheme是运行:

 rem for future setx NODE_PATH %AppData%\npm\node_modules rem for current session set NODE_PATH=%AppData%\npm\node_modules 

老故事

我自己对node.js非常陌生,所以我可能不完全正确,但是从我的经验来看,它是这样工作的:

  1. -g不是安装全局库的一种方法,它只是将它们放在系统path上的一种方法,所以你可以从命令行调用它们而不用写完整的path。 例如,那么节点应用程序转换本地文件非常有用,就像less了一样 – 如果您将其全局安装,则可以在任何目录中使用它。
  2. node.js本身并没有看npm全局目录,而是使用其他algorithm来查找所需的文件: http : //nodejs.org/api/modules.html#modules_file_modules (基本上它扫描path中的每个文件夹,开始从当前为node_modules文件夹并检查它)。

有关更多详细信息,请参阅类似问题: 如何使用npm全局安装模块?

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

我知道我可以唤醒一个僵尸,但我认为这仍然是一个问题,如果您需要Windows 7上的节点模块的全局访问,您需要将其添加到您的全局variablespath:

 C:\Users\{USER}\AppData\Roaming\npm 

重要提示:只有没有node_modules部分的情况下,我花了半个小时才能看到这个。

为了使它在Windows 10上工作,我通过添加文件夹%USERPROFILE%\AppData\Roaming\npm到我的PATH来解决它。 添加了\node_modules如下所示: %USERPROFILE%\AppData\Roaming\npm\node_modules\不适用于我。

我只会引用这个节点的博客文章 …

一般来说,经验法则是:

  • 如果您正在安装您要在程序中使用的东西,请使用require('whatever'),然后将其安装到您的项目的根目录。
  • 如果你正在安装你想在你的shell中使用的东西,在命令行或者其他地方安装,那么它的二进制文件就会在你的PATH环境variables中。

当然,在某些情况下,你想要这样做。 Coffee-script和Express两者都是具有命令行界面的应用程序以及一个库的好例子。 在这些情况下,您可以执行以下任一操作:

  1. 在两个地方安装它。 真的,你是磁盘空间不足吗? 没关系,真的。 他们是很小的JavaScript程序。
  2. 在全局安装它,然后npm链接coffee-script或npm链接expression式(如果你在一个支持符号链接的平台上)。那么你只需要更新全局副本来更新所有的符号链接。

为了简短npm link jade在你的app目录中使用npm link jade

试图添加/编辑环境variables,并得出结论:

  1. 编辑/添加User variables (上部框)而不是System variables (下部); 否则你必须“以pipe理员身份运行”才能正常工作。
  2. 追加;%AppData%\npmPath为了使用它作为一个命令行工具(如果支持,如jshintgrunt-cli )。
  3. 创buildNODE_PATH并将其设置为%AppData%\npm\node_modules ,以便在脚本中require('<pkg_name>') ,而不将其安装在项目目录中。 (但是,如果您正在使用mklink (如Vista和更新版本)的操作系统, 则build议使用npm link

testing环境:

  • Win 7(Ent。,64位,SP1),Node.js 4.2.4,npm 2.14.12
  • Win 8.1(Ent。,64位),Node.js 0.10.30,npm 1.4.21

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

 npm install -g gulp 

以pipe理员身份login时以普通用户身份login。

解决scheme:当执行与普通用户相同的安装(不是“以pipe理员身份运行”cmd)一切正常。 我想这是相关的默认安装和searchpath。

我有一个可怕的时间让全球模块工作。 最后,我明确地将C:\Users\yourusername\AppData\Roaming\npm到系统variables下的PATHvariables中。 我还需要将这个variables放在列表中的nodejspathvariables之前。

我正在运行Windows 10。

从我使用win8.1 npm的时候,在C:\Users\[UserName]\AppData\Roaming\npm\node_modules上安装模块,但在C:\Users\[UserName]\node_modules上转储search它们。

一个简单的解决scheme参考模块应用全path:

 var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify"); 

对于windows,大家都说应该为nodejs和npm模块设置环境variables,但是你知道为什么吗? 对于某些模块,他们有命令行工具,安装好模块后,在C:\ Program Files \ nodejs中有 [module] .cmd文件,用于window命令的启动。 因此,如果不将包含cmd文件的path添加到环境variables%PATH% ,则不会通过命令窗口成功启动它们。

或者,您可以添加到~/.npmrc右前缀 。 我有64个Win7的C:\Program Files\nodejs

我偶然发现这个问题,因为我想在Windows 10和新电脑上使用visual studio 2015的node.js。我在windows 7和8以及8.1上使用node.js从来没有发现一个问题node.jsfind一个模块。 我使用了一个传统的node.js 0.10.39,因为我必须使用这个版本,因为串口和RFXCOM模块。

对于Windows 10的答案是用C:\ Users \ User \ node_modules设置环境variables中的NODE_PATH。

对于Windows 10,我不得不在本地安装gulp文件夹:

C:\用户\我的账户\应用程序数据\漫游\故宫\ node_modules

 npm install gulp 

这固定了我的“吞咽不被认可”

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

我想这是因为节点是由另一个用户安装的 ,而不是我。

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

消息在节点安装

在这里输入图像描述

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

当然,没有必要像我一样用自己的用户重新安装节点。 解决scheme必须通过NODE_PATHPATHvariables,正如其他用户所解释的。

这只是为了说明只有在节点已被其他用户安装的情况下(或者在安装期间, 添加到PATH> npm模块的选项尚未标记),才会出现此问题。

只需下载并重新安装节点,这将解决所有的path问题。

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

如果您使用的是Windows,则需要执行以下步骤:1)创build一个名为package.json的文件

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

其中hello是包的名称,*表示最新版本的依赖关系

2)代码给你项目目录并运行下面的命令

npm安装

它安装依赖关系