42

我意识到,当我全局安装 node.js 模块(带有 -g 标志)时,除非我编写了整个路径,否则节点无法使用该模块。

我的意思是,如果模块已全局安装,这将不起作用:

cheerio = require('cheerio'),

我必须这样写:

cheerio = require('/usr/lib/node_modules/cheerio'),

我怎么能告诉节点它必须在正确的路径中寻找模块?

谢谢你。

4

5 回答 5

56

一般来说,我建议让 npm 为您提供路径并如上所述设置:

$ echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bash_profile && . ~/.bash_profile
于 2012-11-20T08:58:23.157 回答
17

对于 Windows 平台中的用户,请将其添加到系统变量中的 PATH 中:

C:\Users\<username>\AppData\Roaming\npm

PS:在 Windows 8.1 上测试

于 2014-09-16T14:57:59.993 回答
16

您可以将以下内容添加到 ~/.bash_profile:

export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
于 2012-11-20T02:43:35.317 回答
8

对于安装了 ZSH 的人:

echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.zshrc && . ~/.zshrc

于 2014-06-07T06:15:50.223 回答
-2

更好的方法是在你的 js 文件中设置模块路径。

就我而言,我npm install mysql在 /usr/etc 运行,mysql 将显示在“/usr/etc/node_modules”中,所以这是正确的路径:

var mysql = require('/usr/etc/node_modules/mysql');
于 2018-06-05T06:40:41.963 回答