qiankun.js?v=0cc3c8e5:4009 Uncaught (in promise) Error: single-spa minified message #13: See https://single-spa.js.org/error/?code=13&arg=&arg=LOADING_SOURCE_CODE
接下来,我需要确认用户的具体情况。错误信息中提到LOADING_SOURCE_CODE,这可能意味着在获取子应用的源代码时发生了问题。可能的原因包括子应用的入口文件路径不正确,服务器无法访问,或者返回的内容不是有效的JavaScript。此外,跨域问题也可能导致资源加载失败。
用户使用的是qiankun,所以可能是在配置子应用时出了问题。例如,子应用的入口URL是否正确,或者子应用是否未正确暴露生命周期钩子。需要检查子应用的打包配置,确保publicPath设置正确,并且支持跨域访问。
解决步骤可能包括:检查子应用的入口URL是否正确,确认网络请求是否成功,查看控制台和网络面板是否有更多错误信息,验证子应用的生命周期函数是否正确导出,处理可能的跨域问题,以及确保qiankun和single-spa的版本兼容性。
另外,还要考虑是否是缓存问题导致加载旧版本的代码,可能需要清除缓存或禁用缓存进行测试。如果是生产环境,还需要确认构建后的资源路径是否正确。
最后,建议用户提供更多上下文信息,比如子应用的配置和网络请求的具体情况,以便更准确地定位问题。如果用户是新手,可能需要指导他们如何检查这些配置和使用开发者工具进行调试。这个错误是使用 qiankun(基于 single-spa 的微前端框架)时常见的加载子应用失败问题。以下是分步解析与解决方案:
错误含义
Error: single-spa minified message #13
的核心含义是:
框架无法正确加载子应用的源代码(LOADING_SOURCE_CODE)
直接原因:子应用的入口文件(entry)加载失败或返回无效内容
常见原因排查
1️⃣ 子应用入口路径错误
- ✅ 检查主应用中注册子应用的配置:
registerMicroApps([ { name: 'subApp', entry: '//localhost:7100', // 子应用服务必须可访问 container: '#subapp-container', activeRule: '/subapp' } ]);
- 💡 确保子应用服务已启动且端口正确
2️⃣ 子应用未暴露生命周期
- ✅ 子应用必须导出三个生命周期函数:
export async function bootstrap() { ... } export async function mount() { ... } export async function unmount() { ... }
- 💡 如果使用 webpack,需在入口文件(如 main.js)显式导出
3️⃣ 跨域问题(CORS)
- ✅ 子应用服务器需配置允许跨域:
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
4️⃣ 资源路径错误
- ✅ 子应用打包需配置 publicPath:
// vue.config.js module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/subapp/' : '/' }
调试步骤
手动测试入口URL
- 直接在浏览器打开子应用的 entry 地址(如
http://localhost:7100
),确认返回有效 JS 内容
- 直接在浏览器打开子应用的 entry 地址(如
检查浏览器控制台的网络请求
- 查看加载子应用时的网络请求状态码
- 确认返回的 Content-Type 是
application/javascript
启用 qiankun 调试模式
import { setGlobalState } from 'qiankun'; setGlobalState({ debug: true });
典型解决方案示例
// 主应用配置修正示例
start({
prefetch: false,
sandbox: { experimentalStyleIsolation: true } // 开启样式隔离
});
// 子应用生命周期导出示例(Vue)
let instance = null;
function render() {
instance = new Vue({ router, render: h => h(App) }).$mount('#app');
}
export async function bootstrap() { console.log('subapp bootstraped'); }
export async function mount() { render(); }
export async function unmount() { instance.$destroy(); }
进阶建议
- 检查浏览器控制台是否有
404
或Net::ERR_CONNECTION_REFUSED
等网络错误 - 使用
fetch(entry).then(res => res.text())
手动验证入口文件可读性 - 如果是 HTTPS 环境,确保所有资源均为 HTTPS 协议
需要更多具体上下文时,可以提供以下信息:
- 主/子应用的框架类型(Vue/React)
- 完整的错误堆栈截图
- 子应用的注册配置代码段
- 浏览器网络面板中加载子应用的请求详情
相关推荐


















