如何解决从错误的URL加载webpack-dev-server惰性模块
我确实有一个服务器端渲染(Java)应用程序,我想将其与webpack-dev-server集成以便快速进行开发。
我的Java应用程序在端口8080
上运行。
我正在使用以下脚本来启动监听31337
的webpack-dev-server。
"use strict";
const webpack = require("webpack");
const WebpackDevServer = require("webpack-dev-server");
function startServer() {
const configFactory = require("../config/webpack.config");
const config = configFactory("development");
const compiler = webpack(config);
const devServer = new WebpackDevServer(compiler,{
port: 31337,public: "localhost:31337",});
devServer.listen(31337);
}
startServer();
在我的服务器端应用程序中,我将所有脚本标签都更改为src=http://localhost:31337/<bundle>
。对于主模块和运行时模块来说,这很好用。
但是该应用程序恰好使用了带有stenciljs的设计系统构建。
导入模具时,似乎大量使用了惰性模块/惰性导入/代码拆分。在初始页面加载之后,这些块将作为head
标签添加到文档的script
中。
问题是,那些生成的脚本标签未使用localhost:31337
作为主机,而是使用了相对路径(没有协议/主机/端口)。
是否可以解决此问题?我已经尝试使用LimitChunkCountPlugin
,但这在加载页面时确实会产生运行时错误。
任何帮助将不胜感激。
结果HTML:
<base href="/" />
<script
type="text/javascript"
src="http://localhost:31337/js/runtime.js"
></script>
<script type="text/javascript" src="http://localhost:31337/js/main.js"></script>
<script charset="utf-8" src="/js/11.js"></script>
<script charset="utf-8" src="/js/22.js"></script>
<script charset="utf-8" src="/js/16.js"></script>
<script charset="utf-8" src="/js/1.js"></script>
<script charset="utf-8" src="/js/5.js"></script>
<script charset="utf-8" src="/js/21.js"></script>
<script charset="utf-8" src="/js/2.js"></script>
<script charset="utf-8" src="/js/18.js"></script>
<script charset="utf-8" src="/js/13.js"></script>
<script charset="utf-8" src="/js/15.js"></script>
<script charset="utf-8" src="/js/8.js"></script>
<script charset="utf-8" src="/js/24.js"></script>
<script charset="utf-8" src="/js/3.js"></script>
解决方法
执行此操作的正确方法似乎是将output.publicPath
设置为完全限定的URL。
我确实将脚本更改为以下内容,这似乎可以完成工作:
"use strict";
const webpack = require("webpack");
const WebpackDevServer = require("webpack-dev-server");
function startServer() {
const configFactory = require("../config/webpack.config");
const config = configFactory("development");
config.output.publicPath = "http://localhost:31337/";
const compiler = webpack(config);
const devServer = new WebpackDevServer(compiler,{
port: 31337,public: "localhost:31337",publicPath: "http://localhost:31337/",});
devServer.listen(31337);
}
startServer();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。