我正在写一个框架包,我想让它能够自动需要来自主项目src/的模块。如果您熟悉rails,这类似于它的自动加载功能。
因此,如果在您的web应用程序中遵循目录约定,例如src/models/my-model.js
,那么框架可能需要my-model
模块本身。该框架是web应用程序的一个依赖项,它只需要知道关系的名称(即"todos"),以便需要模型(即。src/models/todo.js
)
我已经尝试在我的web应用程序中添加我的web应用程序src目录,但它似乎不适用于依赖项的搜索路径(不确定),所以我的架构库仍然无法在我的web应用程序中找到模块。
我还(拼命地)尝试将require
从web应用程序传递到依赖项,然后在依赖项代码中调用var MyModel = this.thePassedInRequireFn("./models/" + modelName)
,但它出错了:
(`Uncaught Error: Cannot find module './models/my-model'
at MyFramework.webpackEmptyContext
有谁知道如何做到这一点?
如果这个解决方案能够独立使用,那就太好了,但对我来说,最重要的是对webpack的兼容性。
发布于 2018-07-25 05:14:08
以下是使用require.context()
的webpack的具体答案。
https://webpack.js.org/guides/dependency-management/#require-context
在web应用程序中创建一个require上下文。例如:
const requireModule = require.context('./models/', true);
然后将requireModule
作为web应用程序的依赖项传递给框架。
如果您的web应用程序在文件./models/todo-item.js
中有一个模型,并且框架被赋予了模型名称todoItem
,则框架可以仅使用模型名称来请求它,如下所示:
let fileName = `./${kebabCase(modelName)}`;
let module = this.requireModule(fileName).default;
https://stackoverflow.com/questions/51327159
复制相似问题