微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐