问题描述
是个小程序的项目,原来的一直好好的,在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.11至beta.13出现了一些问题,无法编译,所以无法确定到底是beta.11至beta.14中间的哪一个版本出了问题。
期望行为
正常运行
报错信息


TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode.
系统信息
补充信息
原因可能是Taro编译后的代码在开启了严格模式的文件中使用了caller, callee, 和arguments。
但是为什么只在IOS10.2以下会出现问题就不知道了。
beta.11 版本会出现编译失败的情况?
@luckyadam 是这样的,相关处结构为:
├─pages
│ ├─index
│ │ │ index.js
│ │ │ index.scss
│ │ │
│ │ └─Part
│ │ index.js
│ │ index.scss
在index.js里用import Part from './Part'导入了Part组件,结果在beta.11和beta.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
Most helpful comment
可以升级到
1.0.0-beta.19试试