【已解决】如何让项目目录外的模块使用本项目的node_modules
发布于 6 年前 作者 dislido 6626 次预览 最后一次回复是 6 年前 来自 问答
比如以下目录结构
root
- out.js
- proj
- node_modules
- lodash
- package.json
- index.js
index.js
require('lodash');
require('../out');
out.js
require('lodash');
在proj文件夹下执行node index报错,out.js是读取不到proj下的lodash模块的,有没有办法让项目外的模块的require能够读取本项目的node_modules?
我知道可以在out.js中使用module.paths.push('root/proj/node_modules')或设置环境变量set NODE_PATH=root\proj\node_modules来实现功能,有没有通过只修改proj下代码的方式来实现这个功能的方法?
4 回复
开发阶段还是部署阶段?
@waitingsong 是一个electron程序,我想实现一个插件功能,能够添加用户提供的模块,但是像react这样的模块要求全局只能使用同一个react,所以不能让用户模块自己安装react,只能想办法让用户模块使用主程序的react
软连接方式?
@waitingsong 看了node源码后找到了一个合适的解决方案,在Module上做手脚把自己的
node_modules文件夹添加到了nodeModulePaths列表中index.js
out.js
或者修改
Module._resolveLookupPaths可以做到让自己的node_modules搜索优先级高于用户模块的node_modules