如何在带有父级上下文的模块内使用require?

堆垛机

app.js

require('./modules/mod');

modules / mod / mod.js

modules.exports = () => {
   require('./modules/secondmodule');
}

本质上,我希望上面的代码能够需要模块,但要使用从其本身调用的相同上下文,例如,同一文件夹中的另一个模块,而不必使用相对路径。

我以为module.require()做到了这一点,但似乎给了我与我将代码移到单独的模块(mod.js)中后require()相同的错误。

编辑:

从那以后,我发现我可以使用require.parent.module它,并且它似乎正在工作。如果不建议这样做,请告诉我。

那将是烧瓶

require使用相对于当前模块的路径。可以通过提供require父模块来实现:

modules.exports = parentRequire => {
   parentRequire('./modules/secondmodule');
}

用法如下:

require('./modules/mod')(require);

使用相对模块是正确的,因为子模块不应该知道对其进行评估的上下文:

require('../secondmodule');

万一mod必须从中解耦secondmodule,则可以使用某些常见模式(例如,依赖项注入或服务定位器)为其提供依赖项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在静态上下文中使用带有上下文参数的类而不引起内存泄漏?

如何在Xamarin Forms中将ListView按钮的绑定上下文设置为父级的绑定上下文

如何获得对实体父级上下文的引用

重用带有context.WithTimeout的父上下文?

如何在Sonata Media Bundle中显示每个模块的所有上下文列表?

使用上下文API从子级变为父级,onClick被调用多次-ReactJs

如何在带有上下文的Koa中间件中传递参数?

Next.js - 如何使用 Provider 来包装路由并使用带有钩子的上下文

如何为提供者使用带有多个值的React Hooks上下文

如何使用带有钩子的上下文进行身份验证?

如何使用带有箭头函数的 filter() 数组的上下文参数

如何调试“在Android的父级或祖先上下文中找不到方法showTimePickerDialog(View)”?

上下文不会将实体映射到父级

未捕获的错误:尚未为上下文加载模块名称“https”:_。使用 require([])

错误:尚未为上下文加载模块名称“@google-cloud/vision”:_。使用 require([])

如何在反应中使用上下文 api 将数据从子组件更新到父组件?

如何在具有与模块并行存储的父级的多模块项目中使用 jqassistent?

如何在特定上下文中使用querySelectorAll

如何在中间件中使用“ this”上下文

如何在测试中使用上下文?

如何在android中使用上下文?

如何在测试上下文中使用 LocalizationUtility

如何在函数中使用上下文?

Laravel如何在静态方法中使用$ this上下文?

如何在getDerivedStateFromProps中使用React上下文API?

如何在不同的上下文中使用变量?

是否可以在其他上下文中使用带有响应(钩子)的上下文?

如何确定具有多个浏览上下文(父级,iframe或更多iframe)的页面中哪些元素处于非活动状态?

不使用子上下文在UI中更新后台优先级队列上的UIManagedDocument父上下文对象插入