云贝餐饮v3前端报错none uniacid解决

当我部署这个项目,填好 uniacidacid 后编译 H5
本来以为能看到页面正常展示,结果直接给我来一句:

none uniacid

一、现象

1️⃣ 页面报错

页面一加载就提示:

none uniacid

none uniacid

2️⃣ 直接请求 API 也报错

api请求

一开始我以为是 uni-app 配置问题
反复检查了配置文件 —— 没毛病

二、后端排查

翻了半天后端代码,也没看出什么异常。

直到看到这个方法:

public function uniacid()
{
    return Request()->header('uniacid');
}

⚠️ 重点来了

原来 uniacid 是从 HTTP Header 里取的。

那就合理了:

  • 浏览器 直接 GET API
  • Header 里根本没有 uniacid
  • 后端自然报错

👉 结论
问题 100% 在前端

三、前端现场

打开控制台一看,直接血压拉满:

uniacid: undefined

console

前端程序员你在干嘛???

四、请求代码检查

继续顺着请求走,看调用函数:

请求代码

代码本身 没有任何问题,参数也正常传了。

那就只能继续往上翻。

五、真凶出现:入口文件

最后在入口文件里翻到了这段代码:

针对H5做了特殊处理的代码

if (!siteInfo.isDev) {
    let params = utils.getUrlParams(location.href);
    this.globalData.siteInfo.uniacid = params.uniacid;
    console.log(
        '%c params ',
        'color: white; background-color: #f00000',
        params,
        siteInfo
    );
    if (!params.uniacid) {
        util.message('none uniacid', 3);
    }
}
谁教你这么写代码的
  • 你干嘛要让H5 从 URL 取uniacid参数
  • 页面切一下新URL 也不再带 uniacid啊

六、解决办法

直接注释掉这段 H5 特殊处理代码


就职于重庆某互联网小作坊的工程师。

发表评论