Bla*_*bam 8 javascript configuration jsonp webpack webpack-encore
对于相当大的 Web 应用程序,我想在同一页面上运行 Webpack (Encore) 的多个实例。当我将所有源代码放入单个 Webpack 配置中时,一切都会正常工作。但是,当我有两个具有相同源代码的不同配置时,我总是会收到如下错误:
\nlib.84f46ab6.js:19 Uncaught TypeError: __webpack_require__.n is not a function\n at Object../assets/js/lib.js (lib.84f46ab6.js:19)\n at __webpack_require__ (bootstrap:19)\n at __webpack_exec__ (codemirror.css?f2af:1)\n at codemirror.css?f2af:1\n at Function.__webpack_require__.O (chunk loaded:25)\n at codemirror.css?f2af:1\n at webpackJsonpCallback (jsonp chunk loading:36)\n at Array.forEach (<anonymous>)\n at jsonp chunk loading:49\n at runtime.7c0b88c9.js:146\n
Run Code Online (Sandbox Code Playgroud)\n经过一番研究后,我在这里找到了一篇关于该问题的文章:https ://medium.com/@cliffers/how-to-run-multiple-webpack-instances-on-the-same-page-and-avoid-any-conflicts -4e2fe0f016d1
\n它基本上说:
\n\n\nWebpack 未在全局命名空间\xe2\x80\xa6 中运行,那么是什么导致了\n问题?它是一个名为 CommonsChunkPlugin 的 Webpack 插件,用于通过 JSONP 进行 ansyc 按需加载代码。该插件注册并使用名为 window.webpackJsonp 的全局函数,这就是发生冲突的地方。
\n只需更改至少一个正在运行的 webpack 实例的 webpackJsonp 函数的名称即可解决冲突。
\n
但他们在 Webpack 5 中删除了这个功能,我仍然不知道如何正确配置它。有谁知道如何使用最新版本的 Webpack Encore(当前为 1.1.2)解决这个问题?
\n我的配置的一部分:
\n// ...\nconst libConfig = Encore.getWebpackConfig();\n\n// ...\n\n// build the second configuration\nconst appConfig = Encore.getWebpackConfig();\n\nappConfig.name = \'appConfig\';\n\n// Export the final configuration\nmodule.exports = [libConfig,appConfig]\n
Run Code Online (Sandbox Code Playgroud)\n这就是 Encore 中多个配置的基本配置方式:https://symfony.com/doc/current/frontend/encore/advanced-config.html
\n最后我通过在配置中添加以下设置解决了这个问题:
appConfig.output.chunkLoadingGlobal = 'appConfigChunkLoadingGlobal'
Run Code Online (Sandbox Code Playgroud)
就如此容易。它确保用于加载块的全局 Webpack 函数的两个配置名称不同。它是旧webpackJsonp
功能的替代品。
归档时间: |
|
查看次数: |
1626 次 |
最近记录: |