在客户项目中,有一种插件系统。
它是这样工作的:
JS文件位于某个目录中。假设/plugins
。
这些插件导出具有共同签名的函数。
现在,我将其余代码与webpack捆绑在一起。我想通过require(someVar)
动态加载这些模块。
由于我在构建时不知道插件文件,因此无法将它们与webpack捆绑在一起。
我尝试创建一些外部组件,例如,运气不好
:externals: [
(_context, request, callback) =>
/^\/plugins\/.*$/.test(request)
? callback(null, `commonjs ${request}`)
: callback(),
],
在运行时,它会引发如下错误:
Error: Cannot find module '/plugins/file.js'
at webpackEmptyContext (filex.js:line:col)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at Pipe.onread (net.js:594:20)
如何不捆绑这些文件,并在运行时从文件系统中要求它们?使用webpack甚至有可能吗?
答案 0 :(得分:0)
好的,我找到了解决方法:
const dynamicRequire =
typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;
这适用于webpack和ts-node(我在开发时使用ts-node)。