我意识到当我进行node.js模块的全局安装(带有-g标志)时,除非我编写了整个路径,否则节点无法使用该模块。
我的意思是,如果模块已全局安装,则不起作用:
cheerio = require('cheerio'),
我必须写下:
cheerio = require('/usr/lib/node_modules/cheerio'),
如何向节点说它必须在正确的路径中寻找模块?
谢谢。
答案 0 :(得分:49)
一般来说,我建议让npm给你路径并设置如上所述:
$ echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bash_profile && . ~/.bash_profile
答案 1 :(得分:16)
对于Windows平台的用户,请在系统变量中将其添加到PATH中:
C:\Users\<username>\AppData\Roaming\npm
PS:在Windows 8.1上测试
答案 2 :(得分:15)
您可以将以下内容添加到〜/ .bash_profile:
export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
答案 3 :(得分:7)
对于安装了ZSH的人:
echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.zshrc && . ~/.zshrc
答案 4 :(得分:0)
更好的方法是在js文件中设置模块路径。
在我的情况下,我在/ usr / etc运行npm install mysql
,mysql将显示在&#34; / usr / etc / node_modules&#34;中,所以这是正确的路径:
var mysql = require('/usr/etc/node_modules/mysql');