不可思议的BUG

莫看江面平如镜,要看水底万丈深——记一次由表象引起的不是BUG的BUG

起因

先上图
image
一位同学碰到了这样一个问题:明明配置的请求地址是ip,为什么变成域名了。

上图,第一行是实际请求报错的接口,第二行才是打印出的真正配置的接口地址,由于项目上会根据项目环境,会切换接口地址,方便开发、测试、生产。我的第一反应就是切换地址的逻辑有问题。仔细跟了他写的代码,确实在接口请求前,地址是开发地址,但请求之后变成了生产地址。

自己折腾了半天,尝试了各种方案:

  • 把地址换成固定的字符串,如aaa,没问题;
  • 将接口定义文件内容简化;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 简化前
    export default {
    dev: {
    DEV_URL: ''
    },
    test: {
    TEST_URL: ''
    },
    prod: {
    PROD_URL: ''
    }
    }
    // 简化后
    export default {
    dev: '',
    test: '',
    prod: ''
    }
  • 我把生产地址注释掉,发现还调用的是生产地址

然后我又把锅甩给了微信开发者工具,哈哈

好吧,我需要冷静,程序不可能出这种不可思议的错误,回想了最后尝试的一种情况,自己明明把地址注释了,为什么还能显示,然后又尝试全局搜索,还是没发现这个地址……

撞鬼了……

冷静……

冷静……

冷静……

我默默的打开了调试调试工具的network模块
image

我靠,301这不是重定向嘛,看了看详情,果真如此,本来我发送的求情开发库,结果被重定向到了生产环境了

总结

表象迷惑了我,如果早点打开network就不会遇到这么多问题,最终还是坚信有条理的代码,不会产生不可思议的bug。

作者

任裕斌 | robin

发布于

2018-05-03

更新于

2015-01-01

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.