收藏
评论

千万别用 console.assert 方法


自己被自己的小聪明坑惨了,因为小程序没有单元测试的方法,文档没提到,论坛里也没有搜到。


于是尝试用 `console.assert` 来写一些断言在小程序执行时调用,也可以达到效果,在开发者工具里都可以正常运行,完美!自我感觉还良好,于是等基本功能实现完后上传发布。


结果,在手机上,有时候正常显示,有时候无数据,一片白屏,一路追踪,很困难,因为在工具里一切都正常,于是只能一次次在手机上试,发现页面报了一个 warning:“

page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add page route in app.json.2. Invoking Page() in async task.

” 什么的,居然只是个警告,唉……明显一个页面数据的 js 加载不上应该报 error 嘛!


然后再查这个页面,怎么看也没觉得哪里错,后来发现是引用的 util.js 有错,开始以为是引用方法有问题,从 export 换成 module.exports 等都试了也都不行,最终试着注释了 `console.assert` 的语句,终于好了,确定了问题的根源原来是因为用了这个命令,但从开发者工具到手机上都没有错误任何提示,前前后后着实被坑了一整天时间!


感觉这应该也算是微信开发者工具或者小程序的一个 bug,应该要么支持 `console.assert`,要么就不支持报错,同时应该在文档中特别说明。

最后一次编辑于  2018-06-04
收藏

4 个评论

  • 赤琦
    赤琦
    2020-03-07
    console.assert() 方法在 Node.js 中的实现和浏览器中可用的 console.assert() 方法实现是不同的。在浏览器中当 console.assert() 方法接受到一个值为假断言的时候,会向控制台输出传入的内容,但是并不会中断代码的执行,而在 Node.js v10.0.0 之前,一个值为假的断言也将会导致一个 AssertionError 被抛出,使得代码执行被打断。v10.0.0 修复了此差异,所以现在 console.assert() 在 Node 和浏览器中执行行为相同 。
    
    2020-03-07
    赞同
    回复
  • 赤琦
    赤琦
    2020-03-07

    最痛的就是每次有个很有用的特性,很开心,然后一查,小程序不支持 -。-

    2020-03-07
    赞同
    回复
  • 2019-03-22

    是的,目前小程序不支持console.assert,特别坑。做得还不如h5

    2019-03-22
    赞同
    回复
  • 常见
    常见
    2018-07-20

    大家好

    2018-07-20
    赞同
    回复
登录 后发表内容