我正在尝试实现动态模块联合,其中我有一个主机应用程序和很少的远程应用程序。假设我的主机应用程序上有超链接 remote1 ,当我单击remote1链接时,我将动态地在该占位符上加载远程应用程序App1。但是,假设我的远程应用程序关闭,如果我单击超链接- remote1,它将抛出控制台错误强文本
错误:Uncaught(承诺):TypeError:未能获取动态导入的模块:http://localhost:3000/remoteentry.js
以下是我导入远程模块的方式:
import { loadRemoteModule } from '@angular-architects/module-federation';
const routes: Routes = [
{
path: 'remote1',
loadChildren: () =>
loadRemoteModule({
type: 'module',
remoteEntry: 'http://localhost:3000/remoteEntry.js',
exposedModule: './Module'
})
.then(m => m.RemoteModule)
},
];当远程应用程序关闭时,当我单击该链接时,是否有一种方法来处理此错误?我应该能够重定向到另一个页面,在那里我可以显示远程应用程序已关闭的消息?
发布于 2022-02-15 09:57:25
如果远程模块加载过程中出现错误,则可以使用catch返回的loadRemoteModule块加载另一个模块。
loadRemoteModule({
type: 'module',
remoteEntry: 'http://localhost:3000/remoteEntry.js',
exposedModule: './Module'
})
.then(m => m.RemoteModule)
.catch(e => {
return import('src/app/placeholder/placeholder.module').then(m => m.PlaceHolderModule);
})而且,您可以在shell应用程序中创建一个PlaceHolderModule --它的默认路由将加载一个组件,其中包含指示Sorry! Something went wrong. Click refresh to retry的消息。
https://stackoverflow.com/questions/70848941
复制相似问题