node.js – 阻止require(…)查找父目录中的模块

我的Node项目的根目录位于一个目录中,该目录本身是另一个Node项目的根目录.所以这两个文件夹都包含package.json和node_modules.问题是在内部项目中,有时我需要在此项目中未安装的模块.但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

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...