taro Uncaught TypeError: Cannot read property 'componentProto' of undefined

gfttwv5a  于 2022-11-19  发布在  其他
关注(0)|答案(8)|浏览(219)

相关平台

百度小程序

复现仓库

https://github.com/hao-li/taro-problem-sample
小程序基础库: 3.250.12
使用框架: React

复现步骤

  1. git clone git@github.com :hao-li/taro-problem-sample.git
  2. yarn
  3. yarn build:swan
  4. 使用百度开发者工具(3.21.2)加载本项目
  5. 打开 console 查看错误信息
    点击进入百度小程序问题页

期望结果

正常显示页面,console中无错误

实际结果

页面白屏,console 中报错

index.js:1 Uncaught TypeError: Cannot read property 'componentProto' of undefined
    at e (index.js:1)
    at e (index.js:1)
    at Object.getCustomComponentsData (index.js:1)
    at Object.sendInitData (index.js:1)
    at success (index.js:1)
    at o.<anonymous> (index.js:1)
    at o.value (index.js:1)
    at index.js:1
    at Array.forEach (<anonymous>)
    at o.value (index.js:1)
e @ index.js:1
e @ index.js:1
getCustomComponentsData @ index.js:1
sendInitData @ index.js:1
success @ index.js:1
(anonymous) @ index.js:1
value @ index.js:1
(anonymous) @ index.js:1
value @ index.js:1
value @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ master-worker.js:1
(anonymous) @ master-worker.js:1
(anonymous) @ master-worker.js:1
(anonymous) @ master-worker.js:1
onDispatchEvent @ master-worker.js:1
(anonymous) @ master-worker.js:1
(anonymous) @ master-worker.js:1

环境信息

👽 Taro v2.2.16

  Taro CLI 2.2.16 environment info:
    System:
      OS: macOS 10.15.7
      Shell: 5.7.1 - /bin/zsh
    Binaries:
      Node: 12.16.1 - /usr/local/bin/node
      Yarn: 1.17.3 - /usr/local/bin/yarn
      npm: 6.13.4 - /usr/local/bin/npm
    npmPackages:
      @tarojs/components: 2.2.16 => 2.2.16
      @tarojs/mini-runner: 2.2.16 => 2.2.16
      @tarojs/plugin-babel: 2.2.16 => 2.2.16
      @tarojs/plugin-csso: 2.2.16 => 2.2.16
      @tarojs/plugin-sass: 2.2.16 => 2.2.16
      @tarojs/router: 2.2.16 => 2.2.16
      @tarojs/taro: 2.2.16 => 2.2.16
      @tarojs/taro-alipay: 2.2.16 => 2.2.16
      @tarojs/taro-h5: 2.2.16 => 2.2.16
      @tarojs/taro-swan: 2.2.16 => 2.2.16
      @tarojs/taro-tt: 2.2.16 => 2.2.16
      @tarojs/taro-weapp: 2.2.16 => 2.2.16
      @tarojs/webpack-runner: 2.2.16 => 2.2.16
      eslint-config-taro: 2.2.16 => 2.2.16
      eslint-plugin-taro: 2.2.16 => 2.2.16
      nerv-devtools: ^1.5.7 => 1.5.7
      nervjs: ^1.5.7 => 1.5.7
      stylelint-config-taro-rn: 2.2.16 => 2.2.16
      stylelint-taro-rn: 2.2.16 => 2.2.16
      taro-ui: ^2.1.0 => 2.3.1

补充信息

  1. dev 正常 build 有错
  2. 貌似和 taro-ui 及 taro 版本无关,试过新版 taro-ui (2.3.4,2.2.4)及旧版 taro (2.2.6)均由此错误
fzwojiic

fzwojiic1#

@luckyadam 请问大概计划什么时候发布修复版本?

dba5bblo

dba5bblo2#

百度开发者工具新版本 3.22.1 中一样出现这个问题

5lhxktic

5lhxktic3#

复现仓库,反复调试了下,发现还真是taro-ui组件内部的问题。注掉所有taro-ui引入的组件,就可以正常访问了。具体什么原因还没有找到,只知道最简单的一个组件引入,都是有问题的。 @hao-li@luckyadam

w80xi6nr

w80xi6nr4#

复现仓库,反复调试了下,发现还真是taro-ui组件内部的问题。注掉所有taro-ui引入的组件,就可以正常访问了。具体什么原因还没有找到,只知道最简单的一个组件引入,都是有问题的。 @hao-li@luckyadam

swvgeqrz

swvgeqrz5#

@paulloo 这么久了还帮忙解析非常感谢!

@luckyadam 现在情况比较尴尬,升级 Taro 3 则 taro-ui 更不兼容
发现百度小程序中每个 <View>Sth.</View> 都被生成为类似

<swan-template data-origin-name="tmpl_0_container">
  <swan-template data-origin-name="tmpl_0_pure-view">
    <swan-view>Sth.</swan-view>
  </swan-template>
</swan-template>

也就是每个 view 外都套了两层 swan-template
导致所有 flex 布局中 item 成了 container 的重孙子元素,所以样式出错

在微信小程序中并不存在这个问题

不升级,由于这个问题 2 也无法使用(试了最新的 2.2.17 也一样)

所以我们小程序现在已经没法发布版本了,不管 taro 2 还是 3,不知道能不能处理下,谢谢

z9gpfhce

z9gpfhce6#

@paulloo 这么久了还帮忙解析非常感谢!

@luckyadam 现在情况比较尴尬,升级 Taro 3 则 taro-ui 更不兼容
发现百度小程序中每个 <View>Sth.</View> 都被生成为类似

<swan-template data-origin-name="tmpl_0_container">
  <swan-template data-origin-name="tmpl_0_pure-view">
    <swan-view>Sth.</swan-view>
  </swan-template>
</swan-template>

也就是每个 view 外都套了两层 swan-template
导致所有 flex 布局中 item 成了 container 的重孙子元素,所以样式出错

在微信小程序中并不存在这个问题

不升级,由于这个问题 2 也无法使用(试了最新的 2.2.17 也一样)

所以我们小程序现在已经没法发布版本了,不管 taro 2 还是 3,不知道能不能处理下,谢谢

客气了,我也遇到了同样的问题。目前还是没有解决方案吗?

mrphzbgm

mrphzbgm7#

@paulloo 是的

据说 Taro 3 是因为使用 去渲染,但百度的 template 会渲染为一个真实的节点,所以 flex 会失效。
Taro 团队反馈给百度后,等着百度处理也等了好久了,估计也不差再多等一段时间

Taro 2 已经是自生自灭的节奏,应该也不会在这上面花功夫了。

有个代价很大万不得已时可以考虑的解决方法的就是退回 Taro 2,更换 UI 框架避开这两个问题。

r7knjye2

r7knjye28#

@paulloo 是的

据说 Taro 3 是因为使用 去渲染,但百度的 template 会渲染为一个真实的节点,所以 flex 会失效。
Taro 团队反馈给百度后,等着百度处理也等了好久了,估计也不差再多等一段时间

Taro 2 已经是自生自灭的节奏,应该也不会在这上面花功夫了。

有个代价很大万不得已时可以考虑的解决方法的就是退回 Taro 2,更换 UI 框架避开这两个问题。

好的,谢谢!

相关问题