Taro: 更新到1.0.0-beta.11到1.0.0-beta.14某个版本后IOS10.2及以下打开白屏(无内容)

Created on 24 Aug 2018  ·  8Comments  ·  Source: NervJS/taro

问题描述

是个小程序的项目,原来的一直好好的,在IOS10.2及以下测试也没问题。

但是升级到1.0.0-beta.14后(1.0.0-beta.11到1.0.0-beta.12存在问题无法测试),小程序出现问题,在IOS10.2及以下打开白屏,除了Tab栏什么都没有。

打开调试工具后发现是因为js报错阻止了后续代码的加载。

当在微信开发者工具中开启远程调试后,出现问题的设备可以正常运行。

主要的报错内容是:

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode.

原因可能是Taro编译后的代码在开启了严格模式的文件中使用了caller, callee, 和arguments

但是为什么只在IOS10.2及以下会出现问题就不知道了。

复现步骤

可能没有稳定的复现步骤

以下是测试过的版本:

  • beta.16 报错
  • beta.14 报错
  • beta.13 编译后无法运行(wxss路径错误)
  • beta.12 无法编译(缺少npm包Part/index,开始安装...)
  • beta.11 无法编译(缺少npm包Part/index,开始安装...)
  • beta.10 可以正常运行

因为beta.11beta.13出现了一些问题,无法编译,所以无法确定到底是beta.11beta.14中间的哪一个版本出了问题。

期望行为

正常运行

报错信息

image

image

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode.

系统信息

  • 操作系统: Windows 10
  • Taro 版本 v1.0.0-beta.14及以上
  • Node.js 版本 v8.11.2

补充信息

原因可能是Taro编译后的代码在开启了严格模式的文件中使用了caller, callee, 和arguments

但是为什么只在IOS10.2以下会出现问题就不知道了。

Most helpful comment

可以升级到 1.0.0-beta.19 试试

All 8 comments

beta.11 版本会出现编译失败的情况?

@luckyadam 是这样的,相关处结构为:

├─pages
│  ├─index
│  │  │  index.js
│  │  │  index.scss
│  │  │
│  │  └─Part
│  │          index.js
│  │          index.scss

index.js里用import Part from './Part'导入了Part组件,结果在beta.11beta.12中编译时一直重复提示缺少npm包Part/index,开始安装...,在beta.13时解决。

应该是编译时把'./Part'解析成了Part/index`,Taro误认为是个 npm 包,就一直自动安装,失败后无限重试。

能不能给自动安装缺失依赖加一个配置选项进行开关?

@vimcaw 现在最新版本已经解决这个问题了~
然后我看了下 taro 自己的库,编译后是有使用 arguments,但这个在严格模式下是可以使用的,所以这一条报错有没有可能是你的项目引用的其他库导致的?

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode.

@luckyadam 但是我那个项目除了classnames以外没有使用任何第三方库了,这个classnames是很早就引入了,那时候是没有这个问题的,是在更新到beta.11至beta.14的某一个版本后出的问题。

@vimcaw 嗯嗯~ 我再看看那段时间的提交记录,如果没有头绪就只能暂时去掉 use strict

@vimcaw daab0d475ca9c81a2137e42880fb37ddd70e3596 这个提交应该能解决

可以升级到 1.0.0-beta.19 试试

@luckyadam 经过测试已经正常了 👍 感谢大佬不辞万苦为我们修 BUG

Was this page helpful?
0 / 5 - 0 ratings