fix(page): 修复 index.html 主文件引用失配(新主文件没被加载,自动刷新拦截等全部失效)
- 根因:index.html 写死 main.9f4e7a89.js,重拆后主文件改名 main.7cfa4058.js → 请求旧名 404,新主文件里的 HORNET 注入 / 自动刷新拦截 / F5 兜底压根没加载 - 3DTank/web/index.html:引用改为 main.7cfa4058.js - tools/serve.js:Resolve 增加兜底 —— 请求 main.<hash>.js 但文件不存在时,回退到目录里最新的 main.<hash>.js(以后换 bundle 无需再改 HTML) - tools/split.js:拆分完成后自动改写 index.html 的主文件引用(防复发)
This commit is contained in:
1 parent
fd0dffe31b
commit
469f913619
2 files changed
+35
-1
No files matched your search
@@ -409,6 +409,26 @@ var __webpack_modules__ = window.__modules__;
|
||||
console.log(` 资源模块: ${resourceCount} (存入 resources.json)`);
|
||||
console.log(` 代码模块: ${codeCount} (独立文件)`);
|
||||
console.log(` 美化失败: ${failCount}`);
|
||||
// ===== 自动同步 index.html 里的主文件引用 =====
|
||||
// 主文件名带 bundle hash(main.<hash>.js),而 index.html 里写的是固定名;
|
||||
// 重新拆分后必须一起改,否则页面请求旧名 404 → 新主文件(含 HORNET 注入/自动刷新拦截)全部失效。
|
||||
try {
|
||||
const HTML_PATH = path.resolve(__dirname, '..', '3DTank', 'web', 'index.html');
|
||||
if (fs.existsSync(HTML_PATH)) {
|
||||
const MainName = path.basename(MAIN_PATH);
|
||||
const Html = fs.readFileSync(HTML_PATH, 'utf8');
|
||||
const NewHtml = Html.replace(/\/play\/static\/js\/main\.[0-9a-f]{8}\.js/g, '/play/static/js/' + MainName);
|
||||
if (NewHtml !== Html) {
|
||||
fs.writeFileSync(HTML_PATH, NewHtml, 'utf8');
|
||||
console.log(` index.html: 已更新主文件引用 → ${MainName}`);
|
||||
} else {
|
||||
console.log(` index.html: 引用已是最新 (${MainName})`);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(' index.html: 同步失败(不影响拆分结果): ' + e.message);
|
||||
}
|
||||
|
||||
console.log(` 主文件: ${MAIN_PATH}`);
|
||||
console.log(` 资源 JSON: ${RESOURCES_JSON_PATH}`);
|
||||
console.log(` 代码模块目录: ${UNPACKED_DIR}\\`);
|
||||
|
||||
Reference in new issue
Block a user