我的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 举报,一经查实,本站将立刻删除。