如何让父模块在NodeJS中导入子模块的子模块

时间:2016-06-28 21:38:50

标签: node.js module require

Module A
│
└─ Module B (devDependency in Module A's package.json)
   │
   └─ Module C (dependency in Module B's package.json)

模块B是我正在开发的。但我知道模块C将在模块A中使用require('Module C')调用。我遇到的错误是Cannot find module 'Module C'

我目前的解决方案很丑陋,是:

在模块B的index.js中

exports.Module_C = require('Module_C) || require(path.resolve(__dirname, 'node_modules/Module_C/index');

在模块A中

require('Module_B').Module_C

我希望有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

模块不是继承的。

如果您需要在系统中的两个不同位置使用相同的模块,只需在两个不同的位置使用它。

// A.js
var C = require("./modules/c");
var B = require("./modules/b");


// B.js
var C = require("./modules/c");
module.exports = { };

// C.js
module.exports = { };

如果您需要导入模块的子部分,请导航到您需要的文件(或文件的根目录)。

// app.js
var add = require("./lib/helpers/math/add");

如果您尝试在一个模块中提供多个模块的功能,那么您正在寻找的是一项服务,您将为其创建一个API,以抽象您希望最终用户成为什么能够从你需要触摸的所有地方做到这一点。

即使该服务/库基本上只是将其他接口扩展到自己的接口上。​​