我有两个模块:
InternalDefs.js:
const internalLevel = 0;
module.exports = {
internalLevel
};
ExternalDefs.js:
const { internalLevel } = require('./InternalDefs');
const exportedLevel = internalLevel;
module.exports = {
exportedLevel
};
InternalDefs将包含只应在ExternalDefs中使用的定义。
如果两个文件都将通过ExternalDefs导出,并且希望使用该功能的每个人都应该只使用ExternalDefs,那么这个功能。
这是内部操作的封装。例如,数据库模块。
ExternalDefs将具有将使用的功能。 InternalDefs仅用于外部函数。
那么,有没有办法只允许ExternalDefs要求在Node.js中导出InternalDef?
答案 0 :(得分:1)
试图像这样限制它可能是一个坏主意。理想情况下,您应该在一个文件中定义它们,而在内部定义的任何内容都不是您的内部数据。一旦导出,它就可供所有人使用。
但是,如果必须,您可以在internalDefs.js中编写此代码,以限制它仅由externalDefs.js所需。尽早将其添加到internalDefs.js
if (!(module && module.parent && module.parent.filename && module.parent.filename.endsWith && module.parent.filename.endsWith("/ExternalDefs.js")))
throw new Error("InternalDefs is only allowed to be required by ExternalDefs");
答案 1 :(得分:0)
如果您要说的是,您希望第三个类只能访问ExternalDefs.js
,而不能InternalDefs.js
参考internalDefs
中定义的ExternalDefs.js
那么它不会。
任何外部课程require
ExternalDefs.js
只能访问internalDefs
中定义的ExternalDefs.js
,并且无法访问InternalDefs.js
内的属性
如果这不是你的问题,我建议你详细说明