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