首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs根据目录结构需要不同的模块

Nodejs根据目录结构需要不同的模块
EN

Stack Overflow用户
提问于 2014-03-09 20:33:39
回答 1查看 125关注 0票数 0

我有两个使用相同目录的节点项目:

代码语言:javascript
复制
projectA/
 |- app.js 
 |- projectB/
     |- app.js  
     |- node_modules/ 
           |- moduleX : version 1
 |- commonDir/ 
   |- commonModule.js
 |- node_modules/ 
   |- moduleX : version 2

commonModule.js

代码语言:javascript
复制
    require("moduleX")

projectAprojectB都做require(commonModule)。我预计当我运行projectA ( "node“表单'projectA/')时,版本2将被加载,而当我运行projectB("node”表单'prjoctB/')时,版本1将被加载。不幸的是,在这两种情况下,它似乎运行版本2。

我在这里做错什么了吗?

编辑:我现在了解到,节点根据当前模块搜索模块,该模块执行“()”,这是有意义的。

那么,如何选择加载,运行哪个模块版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-09 21:56:10

我没有在commonModule中对模块名进行硬编码,而是将其设置为可以给它一个模块对象。例如,commonModule可以包含:

代码语言:javascript
复制
module.exports = function(other_module) {
    return {
        foo: function () {
            return other_module.something("blah");
        }
    };
}

然后,每个项目都将自己的模块传递给commonModule

代码语言:javascript
复制
var commonModule = require("commonModule")(require("./moduleX"));

commonModule.foo();

./moduleX将根据每个项目得到解决,因此没有问题。您的项目必须能够找到commonModule,但是您似乎已经完成了这个部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22287789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档