node.js从全局目录里加载module
首先,有这个需求也是为了本地开发方便,每新建一个项目都要npm一堆包,虽然一个package.json文件就能搞定,但确实没必要频繁下载,虽然node官方不建议这么做“你就这么缺少硬盘空间么?”~~~总之有需求就要实现嘛
普通的npm会安装到当前目录,加上—global参数(简写为-g)就会安装到默认的全局目录,至于Node和npm的默认目录是哪些,建议阅读这篇文章,对于win7,8用户言,现在是默认装到Program Files\nodejs下, npm 的 repo在 %USERPROFILE%\AppData\Roaming\npm 且会自动加到系统PATH下。
如此这般,测试
npm install mongodb -g
node
>var mongo = require(‘mongodb’)
结果却报找不到moudle,怎么回事,在指定目录下确实找到了node_moudles/mongodb,于是干脆找了一下官方文档,没有什么建设性意见,当然上面这篇文档建议通读一下,非常好地讲解了moudule加载的规则以及require的用法。
仍然是在stackoverflow找到了答案,把上述npm的全局repo自己写到NODE_PATH目录里去,这也是官方文档说的,只是node的msi包自己添加了两个path,却没有自动添加node_path。即NODE_PATH=%USERPROFILE%\AppData\Roaming\npm\node_modules
其实我当时自己也试过,但是不知道什么原因就是不成功,后来我把命令行窗口关了重开才生效,这有关系么?