防止要求(...)从父目录中查找模块 [英] Prevent require(...) from looking up modules in the parent directory
本文介绍了防止要求(...)从父目录中查找模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的Node项目的根目录位于一个目录中,该目录本身就是另一个Node项目的根。因此两个文件夹都包含package.json
和node_modules
。问题是,在内部项目中,有时Irequire
模块没有安装在该项目中。但Node只是在父项目的node_modules
中悄悄地找到它们,这导致了恼人的惊喜。我能以某种方式阻止它这样做吗?我不想更改项目的目录结构,除非这是唯一的解决方案。
推荐答案
节点尝试解析当前模块路径名并将node_modules
连接到其每个父目录。[Source]。
//app.js <-- parent project module, should be added at the top
var Module = require('module').Module;
var nodeModulePaths= Module._nodeModulePaths; //backup the original method
Module._nodeModulePaths = function(from) {
var paths = nodeModulePaths.call(this, from); // call the original method
//add your logic here to exclude parent dirs, I did a simple match with current dir
paths = paths.filter(function(path){
return path.match(__dirname)
})
return paths;
};
灵感来自this module
这篇关于防止要求(...)从父目录中查找模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文