Skip to content

问题

无界的页面多次刷新后,会出现异常,比如进入了404页面,或者无界子应用显示的是主应用的首页

问题原因

经过很久的排查,最后定位问题出现在无界上,无界子应用在加载完html后,会请求主应用的资源,详见issue,默认情况下,无界子应用会发起主应用的请求,url为主应用的根目录,例如https://baidu.com/这种,而对于主应用,没有对应的根路径的路由,因此主应用会路由拦截,跳转到404页面,有时候也会路由拦截后跳转到主应用首页,这个拦截不是每次都能复现,要多刷新几次,不知道为什么。

解决办法

无界官网提供了一个解决办法

主应用可以提供一个空的路径,专门给子应用访问,同时在子应用上设置默认不访问根路径,而是访问指定的路径。

  1. 在主应用的WujieVue组件上设置:
js
import WujieVue from 'wujie-vue3'

WujieVue.setupApp({
    name: props.name,
    attrs: { src: `${location.origin}/wujie/empty` }
})
  1. 在主应用 template 的 head 第一个元素插入一个<script>if(window.parent !== window) {window.stop()}</script>这样的标签应该可以避免主应用代码污染