我现在正在Windows上学习nodejs。有几个模块是通过npm全局安装的。nodejs无法找到已安装的模块。以玉为例,

npm install jade -g

Jade安装在“C:\Program Files (x86)\nodejs\node_modules”目录下,但下面的代码将失败,并提示“无法找到模块' Jade '”错误。

var jade = require('jade');

然而,当jade在本地安装时(npm中没有-g选项),代码将成功运行。我不想使用本地安装的模块,这对我来说是浪费磁盘空间。如何使全局安装的模块在Windows上工作?


当前回答

对于windows,每个人都说你应该为nodejs和npm模块设置环境变量,但你知道为什么吗? 对于一些模块,他们有命令行工具,安装模块后,有[模块]。cmd文件在C:\Program Files\ nodejs中,用于在窗口命令中启动。因此,如果您没有将包含cmd文件的路径添加到环境变量% path %,则无法通过命令窗口成功启动它们。

其他回答

从我使用win8.1的经验来看,npm在上面安装模块 C:\Users\【用户名】\ AppData \ \ npm \ node_modules徘徊 但他却继续搜索 C:\Users\【用户名】\ node_modules。

一个简单的解决方案参考模块在应用程序的全路径:

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

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

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

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

2)代码到你的项目目录并运行以下命令

npm安装

它会安装依赖项

以上所有的答案都不适合我。唯一有效的方法是将%AppData%\npm添加到环境Path变量中,并删除C:\Program Files\nodejs.中的两个ng文件

ng包没有安装在C:\Program Files\nodejs\ node_modules中,因此使用nodejs目录中的ng二进制文件显然是行不通的。

我不知道为什么它在这个目录中搜索,因为我已经配置了 —PATH环境变量 - C:\Users\MyUser目录下的.npmrc —尝试添加系统变量和/或NODE_PATH

简而言之,在你的应用目录中使用npm link jade。

我花了一段时间让全局模块工作。最后,我显式地将C:\Users\yourusername\AppData\Roaming\npm添加到“系统变量”下的PATH变量中。我还需要将这个变量放在列表中的nodejs path变量之前。

我用的是Windows 10。