【问题标题】:Javascript - Reflect.construct requires the first argument be a constructor (only iOS 13)Javascript - Reflect.construct 要求第一个参数是构造函数(仅限 iOS 13)
【发布时间】:2021-08-09 02:44:10
【问题描述】:
我的跨平台 vue 应用突然在 iOS 13 上完全停止运行,但在 iOS 14 和其他平台上仍然可以正常运行。
我向window.onerror 添加了警报,发现我的chunk-vendors.js 文件中有一个TypeError: Reflect.construct requires the first argument be a constructor (only iOS 13) 的案例,其中的代码无法真正理解。
我尝试将 package.json 从提交中恢复为一切正常的版本,但这没有帮助
【问题讨论】:
标签:
javascript
vue.js
webpack
babeljs
【解决方案1】:
进一步查看 chunk-vendors.js 最终会告诉你错误发生在 babel 的 construct.js 的某个地方。要找出导致错误的类,请在 _construct 内添加一个日志/警报,如下所示:
export default function _construct(Parent, args, Class) {
alert(Class); // <-- add this to find the culprit
if (isNativeReflectConstruct()) {
_construct = Reflect.construct;
} else {
...
现在是时候重新审视类的构造函数了,更有可能是它扩展的类的构造函数。
就我而言,我有一个扩展 EventTarget 的类,iOS 13 不支持该类。