diff --git a/src/utils/request.ts b/src/utils/request.ts index 6db0923..8df1138 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -69,8 +69,12 @@ axiosInstance.interceptors.request.use((options) => { // @ts-ignore url = import.meta.env.DEV ? cozePath : (AI_SERVER + cozePath); } else if (url?.startsWith('/api/v1/clazz')) { - // @ts-ignore - url = KC_SERVER + url; + // 必须用绝对 URL:否则在 wx/static 等域打开 H5 时 axios 会把 /api/v1/clazz 发到当前域名,落到 SPA index.html(字符串),触发排课 normalize 报错 + // @ts-ignore vite define + const kcBase = KC_SERVER || UC_SERVER; + if (kcBase) { + url = new URL(url, kcBase.endsWith('/') ? kcBase : `${kcBase}/`).href; + } } return {...rest, url, headers: headersObj}; @@ -148,6 +152,15 @@ export default function request({url = '', method = 'get', data, params, ...rest resolved.e = getHtyErrUserMessage(res.hty_err, resolved.e ?? baseErrText); } + // 网关未配置 /api/v1/clazz/ 时 SPA 返回 HTML,axios 会得到 string,原先会当作 d 传入业务层触发「排课数据格式异常」 + const rawBody = resolved.d; + if (typeof rawBody === 'string' && /^\s*