评论

不明确报错的一个案例,routeDone not the current page

在 TypeScript 构建的微信小程序中,ts 文件中的模型或者属性名称错误可以被 IDE 检测到,但是 wxml 文件中的模型或者属性名称错误不能被检测到,报告的错误也没有明显指示作用。

案发现场

昨天开发遇到了一个问题,报告了三个错误,具体信息如下

TypeError: Cannot read property 'constructor' of undefined

routeDone with a webviewId 65 that is not the current page

TypeError: Cannot read property 'data' of null

初步排查

第一个错误不明所以,不像是应用层面问题。

第二个错误可能是页面的问题。

第三个错误不明所以,不像是应用层面问题。

综上,可能是当前开发的页面有问题。

更改编译模式,进入其他页面,没有发现问题,进入当前开发页面,问题重现。

进一步排查

采用替换法。

将文件内容注释,逐步开启,排查问题点。

从第一个和第三个问题出发,我首先怀疑问题在 ts 文件中(使用 Typescript 开发)。

  • 注释启动函数中的代码,问题依旧。
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    // form.onInput(this)
    // user.userReady()...
    }
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  • 注释Page的定义,问题依旧
// Page<IPageData, IPageAction>({
Page({
  • 恢复 Page 的初始定义,问题依旧

排除了 ts 文件问题,排查 wxml 文件问题。

从上到下,逐步排查。

然后发现一个值的表达式,模型的属性的名称多写了一个字母。

即便在页面定义去除的情况下,依然也会报错。

至此,问题解决。

最后一次编辑于  05-23  
点赞 0
收藏
评论
登录 后发表内容