Skip to content

Commit 497387b

Browse files
author
ws-wangjg
committed
build: vercel mfe
1 parent 79f8a25 commit 497387b

1 file changed

Lines changed: 23 additions & 2 deletions

File tree

webpack/mfe.config.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,29 @@ export function generateRemotesConfig(isDev = false) {
6262
url = isDev ? project.devUrl : project.prodPath
6363
}
6464

65-
// Module Federation 格式: name@url
66-
remotes[project.name] = `${project.name}@${url}`
65+
// 使用 promise 语法动态加载脚本并从 window 对象获取容器
66+
// 这是因为 remotes 使用了 library: { type: 'window' } 配置
67+
const promiseCode = `promise new Promise((resolve, reject) => {
68+
if (typeof window.${project.name} !== 'undefined') {
69+
return resolve(window.${project.name});
70+
}
71+
const script = document.createElement('script');
72+
script.src = '${url}';
73+
script.async = true;
74+
script.onload = () => {
75+
if (typeof window.${project.name} !== 'undefined') {
76+
resolve(window.${project.name});
77+
} else {
78+
reject(new Error('Container ${project.name} not found on window after loading script'));
79+
}
80+
};
81+
script.onerror = (error) => {
82+
reject(new Error('Failed to load remote entry: ${url}'));
83+
};
84+
document.head.appendChild(script);
85+
})`
86+
87+
remotes[project.name] = promiseCode
6788
})
6889

6990
return remotes

0 commit comments

Comments
 (0)