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

其实我当时自己也试过,但是不知道什么原因就是不成功,后来我把命令行窗口关了重开才生效,这有关系么?

原文地址:https://www.cnblogs.com/walkerwang/p/3001001.html