micro-app
micro-app copied to clipboard
在子应用里面发送请求会拼接主应用的前缀(ip和端口号)
<micro-app
name='vue-test-1' url='http://127.0.0.1:9999'></micro-app>
以上是子应用路径,页面加载子应用后,在子应用操作请求,请求地址前缀会变成是主应用的(http://192.168.0.101:81/sys) 正常应该是http://127.0.0.1:9999/sys 这个怎么配置解决呢
这种情况只能手动补全
可以通过反向代理,进行转发,大概意思是:
假设目前的接口地址为:/sys
那么你可以改变子应用,所有接口增加前缀,例如 /sub-xxx/sys
然后在网关层,或者主应用的 NGINX 中发现 /sub-xxx
转发到子应用的服务地址
不知这种方式能否解决
谢谢解答!
我目前处理方法是把子应用的请求前缀写死,
路由添加配置:axios.defaults.baseURL = "http://127.0.0.1:9999"
设置后主应用调用子应用的时候不再获取浏览器的前缀。
谢谢解答! 我目前处理方法是把子应用的请求前缀写死, 路由添加配置:
axios.defaults.baseURL = "http://127.0.0.1:9999"
设置后主应用调用子应用的时候不再获取浏览器的前缀。
如果只有一个环境可能这样就够了,但如果是多个环境,比如开发和生产,如果不用反向代理,搞一个 if/else,
function getBaseUrl() {
const mianUrl = location.origin // 主应用域名
if(mainUrl === dev 环境) {
return dev子域名
} else if (mainUrl === 生产环境) {
return 生产子域名
}
}
.env,开发/测试/生产不同的路径
如果只有一个环境可能这样就够了,但如果是多个环境,比如开发和生产,如果不用反向代理,搞一个 if/else,
太棒了,谢谢解答
.env,开发/测试/生产不同的路径
谢谢
没有办法通过中间件的方案来自动补齐吗
axios.defaults.baseURL = window.__MICRO_APP_PUBLIC_PATH__ || location.origin;
这样写也可以