@lemon-fe/vite-plugin-micro-frontend 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/runtime.js +107 -35
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/dist/runtime.js
CHANGED
|
@@ -103,6 +103,27 @@ function isChunkLoadError(error) {
|
|
|
103
103
|
error.message?.includes("Loading CSS chunk") ||
|
|
104
104
|
error.name === "ChunkLoadError");
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* 检测是否可能是版本不匹配导致的运行时错误
|
|
108
|
+
* 这些错误通常发生在:新版本部署后,用户没有刷新页面,
|
|
109
|
+
* 旧页面的代码尝试与新版本的模块交互,导致状态/API 不匹配
|
|
110
|
+
*/
|
|
111
|
+
function isPossibleVersionMismatchError(error) {
|
|
112
|
+
const message = error.message || "";
|
|
113
|
+
return (
|
|
114
|
+
// 常见的状态管理相关错误
|
|
115
|
+
message.includes("Cannot read properties of null") ||
|
|
116
|
+
message.includes("Cannot read properties of undefined") ||
|
|
117
|
+
message.includes("is not a function") ||
|
|
118
|
+
message.includes("is not defined") ||
|
|
119
|
+
// Redux/Zustand/其他状态管理库相关
|
|
120
|
+
message.includes("store") ||
|
|
121
|
+
message.includes("dispatch") ||
|
|
122
|
+
message.includes("reducer") ||
|
|
123
|
+
// React 相关的 hook 错误
|
|
124
|
+
message.includes("Invalid hook call") ||
|
|
125
|
+
message.includes("Rendered more hooks than during the previous render"));
|
|
126
|
+
}
|
|
106
127
|
/**
|
|
107
128
|
* 从错误信息中提取失败的 URL
|
|
108
129
|
*/
|
|
@@ -111,8 +132,50 @@ function extractFailedUrl(error) {
|
|
|
111
132
|
const match = error.message?.match(/module:\s*(https?:\/\/[^\s]+)/);
|
|
112
133
|
return match ? match[1] : null;
|
|
113
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* 检查 manifest 是否有更新
|
|
137
|
+
* @returns 如果有更新返回 true,否则返回 false
|
|
138
|
+
*/
|
|
139
|
+
async function hasManifestUpdated(baseUrl) {
|
|
140
|
+
const cachedManifest = manifestCache.get(baseUrl);
|
|
141
|
+
if (!cachedManifest) {
|
|
142
|
+
// 没有缓存的 manifest,无法判断是否更新
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
const newManifest = await fetchManifest(baseUrl, true);
|
|
147
|
+
// 检查是否有新增的入口
|
|
148
|
+
if (cachedManifest["index.html"].file !== newManifest["index.html"].file) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// 获取新 manifest 失败,无法判断
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 处理版本不匹配错误:检查是否有新版本,如果有则提示刷新
|
|
160
|
+
*/
|
|
161
|
+
async function handlePossibleVersionMismatch(error) {
|
|
162
|
+
// 尝试从所有缓存的 manifest 中检查是否有更新
|
|
163
|
+
const baseUrls = Array.from(manifestCache.keys());
|
|
164
|
+
for (const baseUrl of baseUrls) {
|
|
165
|
+
const hasUpdate = await hasManifestUpdated(baseUrl);
|
|
166
|
+
if (hasUpdate) {
|
|
167
|
+
alert("系统已更新,请刷新页面以获取最新版本。");
|
|
168
|
+
window.location.reload();
|
|
169
|
+
// reload 后不会继续执行,但 TypeScript 需要这个
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// 没有检测到版本更新,抛出原始错误
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
114
176
|
/**
|
|
115
177
|
* 包装 loader,在加载失败时通过 manifest 重新映射并加载最新 chunk
|
|
178
|
+
* 同时处理可能的版本不匹配导致的运行时错误
|
|
116
179
|
*/
|
|
117
180
|
function wrapLoaderWithManifestRetry(loader) {
|
|
118
181
|
return async () => {
|
|
@@ -120,45 +183,54 @@ function wrapLoaderWithManifestRetry(loader) {
|
|
|
120
183
|
return await loader();
|
|
121
184
|
}
|
|
122
185
|
catch (error) {
|
|
123
|
-
if (!(error instanceof Error)
|
|
186
|
+
if (!(error instanceof Error)) {
|
|
124
187
|
throw error;
|
|
125
188
|
}
|
|
126
|
-
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
manifestKey =
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
189
|
+
// 情况1:典型的 chunk 加载失败错误,尝试通过 manifest 重新映射
|
|
190
|
+
if (isChunkLoadError(error)) {
|
|
191
|
+
const failedUrl = extractFailedUrl(error);
|
|
192
|
+
if (!failedUrl) {
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
// 从失败的 URL 中提取应用的 base URL
|
|
196
|
+
const baseUrl = extractBaseUrl(failedUrl);
|
|
197
|
+
// 提取失败文件的相对路径
|
|
198
|
+
const filePath = extractFilePath(failedUrl, baseUrl);
|
|
199
|
+
if (!filePath) {
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
202
|
+
// 先获取缓存的旧 manifest(如果有),通过 file 反向找到 key
|
|
203
|
+
const cachedManifest = manifestCache.get(baseUrl);
|
|
204
|
+
let manifestKey = null;
|
|
205
|
+
if (cachedManifest) {
|
|
206
|
+
manifestKey = findManifestKeyByFile(cachedManifest, filePath);
|
|
207
|
+
}
|
|
208
|
+
// 获取最新的 manifest(强制刷新)
|
|
209
|
+
const newManifest = await fetchManifest(baseUrl, true);
|
|
210
|
+
if (!manifestKey) {
|
|
211
|
+
// 无法从缓存的 manifest 中找到源文件路径,提示用户刷新
|
|
212
|
+
console.warn("[dynamic] 无法映射 chunk,提示用户刷新页面:", filePath);
|
|
213
|
+
alert("系统已更新,请刷新页面以获取最新版本。");
|
|
214
|
+
window.location.reload();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
// 用 key 在新 manifest 中找到新的 file
|
|
218
|
+
const newUrl = findNewChunkUrlByKey(newManifest, manifestKey, baseUrl);
|
|
219
|
+
if (!newUrl) {
|
|
220
|
+
console.warn('[dynamic] 无法在新 manifest 中找到 "${manifestKey}" 对应的 chunk');
|
|
221
|
+
alert("系统已更新,请刷新页面以获取最新版本。");
|
|
222
|
+
window.location.reload();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
// 动态导入新的 chunk
|
|
226
|
+
return import(/* @vite-ignore */ newUrl);
|
|
151
227
|
}
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
console.warn('[dynamic] 无法在新 manifest 中找到 "${manifestKey}" 对应的 chunk');
|
|
156
|
-
alert("系统已更新,请刷新页面以获取最新版本。");
|
|
157
|
-
window.location.reload();
|
|
158
|
-
return;
|
|
228
|
+
// 情况2:可能是版本不匹配导致的运行时错误
|
|
229
|
+
if (isPossibleVersionMismatchError(error)) {
|
|
230
|
+
return handlePossibleVersionMismatch(error);
|
|
159
231
|
}
|
|
160
|
-
//
|
|
161
|
-
|
|
232
|
+
// 其他错误,直接抛出
|
|
233
|
+
throw error;
|
|
162
234
|
}
|
|
163
235
|
};
|
|
164
236
|
}
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sources":["../src/runtime/qiankun.ts","../src/runtime/dynamic.ts"],"sourcesContent":[null,null],"names":["_qiankunWindow","_renderWithQiankun"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime.js","sources":["../src/runtime/qiankun.ts","../src/runtime/dynamic.ts"],"sourcesContent":[null,null],"names":["_qiankunWindow","_renderWithQiankun"],"mappings":"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"}
|