Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

小程序插件:Cannot read property 'designWidth' of undefined #4117

Closed
ThatRoy opened this issue Aug 9, 2019 · 11 comments
Closed

小程序插件:Cannot read property 'designWidth' of undefined #4117

ThatRoy opened this issue Aug 9, 2019 · 11 comments
Assignees

Comments

@ThatRoy
Copy link

ThatRoy commented Aug 9, 2019

问题描述
在 taro init 创建完后的项目中,引入 taro-ui,使用 AtRate 评分组件,在微信开发者工具打开对应的页面看不到评分组件;换成 AtButton 组件,在页面上可以看到按钮

复现步骤
1.taro init 项目,选择 scss,plugin 模板
2.安装 taro-ui
3.引入 AtRate 组件

import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'

import { AtRate } from 'taro-ui';
import 'taro-ui/dist/style/components/rate.scss';
import 'taro-ui/dist/style/components/icon.scss';

export default class Index extends Component {
  render () {
    return (
      <View>
        <AtRate size={15} max={5} value={4} />
      </View>
    )
  }
}

期望行为
正常展示评分组件

报错信息
image

系统信息
image

补充信息
1.taro v1.3.12, taro-ui v2.2.1
2.taro doctor 信息
image
3.已尝试过 taro update project
4.在 AtRate 源码中,看到 Taro.pxTranform() 调用,似乎是这里报错
image
5.后续尝试单独引入 AtIcon 组件,依旧遇到上述情况的报错信息,AtIcon 组件的源码中也发现调用 pxTranform()

@taro-bot
Copy link

taro-bot bot commented Aug 9, 2019

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

@Chen-jj
Copy link
Contributor

Chen-jj commented Aug 9, 2019

@ThatRoy Button 也不能用吧,你怎么使用的。刚试了试插件是对 taro-ui 支持有问题。

@ThatRoy
Copy link
Author

ThatRoy commented Aug 9, 2019

@Chen-jj 目前使用的情况是 AtButton 可以,AtTab 也可以,现在是只发现 AtRate,AtIcon 出现这样的情况。还不知道怎么解决。

import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'

import { AtButton } from 'taro-ui'
import 'taro-ui/dist/style/components/button.scss'
import 'taro-ui/dist/style/components/loading.scss'

export default class Index extends Component {
  render () {
    return (
      <View>
        <AtButton>按钮文案</AtButton>
      </View>
    )
  }
}

@Chen-jj Chen-jj self-assigned this Aug 9, 2019
@Chen-jj
Copy link
Contributor

Chen-jj commented Aug 9, 2019

@ThatRoy 你这样使用 button 有样式吗?扔一下完整项目上来?

@ThatRoy
Copy link
Author

ThatRoy commented Aug 9, 2019

@Chen-jj 有样式,你看看 项目地址

@ThatRoy ThatRoy changed the title Cannot read property 'designWidth' of undefined 小程序插件:Cannot read property 'designWidth' of undefined Aug 13, 2019
@luckyadam
Copy link
Member

在插件的入口文件里调用一下 Taro.initPxTransfrom({ designWidth: 750 }) 试试

@Chen-jj
Copy link
Contributor

Chen-jj commented Aug 15, 2019

@ThatRoy pxTransform 函数有点问题,可以等下一版本 1.3.14,或如楼上所讲试试。

再确认两个发现的问题,

  1. 你写的是“插件页面”,taro-ui 组件都配置了 addGlobalClass,所以 taro-ui 组件的样式可以从页面 wxss 获取。但如果写的是“插件组件”,则会没有样式,正如我一开始向你确定是否有样式。因此如果你需要写“插件组件”,则只能直接拿 taro-ui 组件源码了。

  2. 你编译出来的 page.json 里 using component 字段没有报错吗?应该路径是错误的。

image

应该要把

image

改成这样才能跑?

image

@ThatRoy
Copy link
Author

ThatRoy commented Aug 20, 2019

@Chen-jj 编译出来的 page.json 里 using component 字段有报错,这个问题在 #3794 看到,就没有再提问,都是手动改。

刚更新 cli 到 v1.3.14,也执行 taro update project,不会再出现 Cannot read property 'designWidth' of undefined,界面上可以正常看到组件。

#3794 的问题都解决了,但打包出来的文件里的路径依旧是不对,却可以正常展示组件,不报错。
image

我的 taro info 信息
image

@ThatRoy
Copy link
Author

ThatRoy commented Aug 20, 2019

不对,没有解决,像有缓存的样子

@Chen-jj
Copy link
Contributor

Chen-jj commented Aug 20, 2019

@ThatRoy 所以 1.3.14 问题只剩 taro-ui 组件路径错误是吧?

@Chen-jj
Copy link
Contributor

Chen-jj commented Aug 22, 2019

#3794 已修复

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants