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非常陌生,所以我可能不完全正确,但是从我的经验来看,它是这样工作的:
- -g不是安装全局库的一种方法,它只是将它们放在系统path上的一种方法,所以你可以从命令行调用它们而不用写完整的path。 例如,那么节点应用程序转换本地文件非常有用,就像less了一样 – 如果您将其全局安装,则可以在任何目录中使用它。
- 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两者都是具有命令行界面的应用程序以及一个库的好例子。 在这些情况下,您可以执行以下任一操作:
- 在两个地方安装它。 真的,你是磁盘空间不足吗? 没关系,真的。 他们是很小的JavaScript程序。
- 在全局安装它,然后npm链接coffee-script或npm链接expression式(如果你在一个支持符号链接的平台上)。那么你只需要更新全局副本来更新所有的符号链接。
为了简短npm link jade
在你的app目录中使用npm link jade
。
试图添加/编辑环境variables,并得出结论:
- 编辑/添加
User variables
(上部框)而不是System variables
(下部); 否则你必须“以pipe理员身份运行”才能正常工作。 - 追加
;%AppData%\npm
到Path
为了使用它作为一个命令行工具(如果支持,如jshint
和grunt-cli
)。 - 创build
NODE_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_PATH或PATHvariables,正如其他用户所解释的。
这只是为了说明只有在节点已被其他用户安装的情况下(或者在安装期间, 添加到PATH> npm模块的选项尚未标记),才会出现此问题。
只需下载并重新安装节点,这将解决所有的path问题。
不要忘记重新启动您的命令提示符或terminal。
如果您使用的是Windows,则需要执行以下步骤:1)创build一个名为package.json的文件
{ "name": "hello" , "version": "0.0.1" , "dependencies": { "express": "*" } }
其中hello是包的名称,*表示最新版本的依赖关系
2)代码给你项目目录并运行下面的命令
npm安装
它安装依赖关系