用 NPM 全局安装模块后, 有时在程序使用的时候 require 会报找不到模块, 要如何解决? Node.JS 是在 module.paths 包含的目录列表中寻找模块的, 所以, 要解决这个问题就是将全局模块加入到 module.paths 目录列表中.
全局安装模块后在程序里面 require 这个模块报错, 模块找不到. 如下图所示, 首先按照正常的方式 NPM install -g express 全局安装 express 模块. 然后在测试 require('express') 报错.
那么问题就出在 Node.JS 怎么查找模块上. 首先, 我们要知道 NPM 全局安装到底把模块安装到了哪个目录下面. 在终端运行 NPM prefix -g 命令会打印出安装路径. 而 Node.JS 查找模块是在 module.paths 目录列表下面查找的.
所以, 一种解决方案是在程序中将 NPM 全局安装路径添加到 module.paths 中.
module.paths.push('全局安装路径'). 然后再测试可行.
这种方案只对当前 JS 有效.
另一种是添加环境变量 NODE_PATH, 值就设置成全局安装路径. 如图中所示, 添加后测试可行.
其实, 添加环境变量 NODE_PATH 后, 我们再去查看 module.paths 时会发现环境变量中的路径也已经在 module.paths 中了.
所以, 最方便的解决办法就是: NPM prefix -g 找到全局安装的路径, 然后添加到环境变量 NODE_PATH 中.
来源: http://www.css88.com/qa/node-js/10597.html