场景

发现IOS 13.7 打开h5会报错:

Unexpected token '='. Expected an opening '(' before a method's parameter list .

一打开h5就报错,且高版本不会报错。

因此怀疑是兼容性问题
技术栈:svelte

排查与原因

推测:

svelte编译后会产生IOS13无法解析的东西,降级不够导致的。

解决方法

// webpack.config.js:

{
    test: /\.js$/,
    // exclude: /node_modules/, //处理除了nodde_modules里的js文件
    include: [/node_modules[\\/]svelte[\\/]/],
    use: {
        loader: "babel-loader",
        options: {
            presets: [
                [
                    "@babel/preset-env",
                    {
                        useBuiltIns: "usage",
                        corejs: "3.22"
                    }
                ]
            ],
            plugins: ["@babel/transform-runtime"] //添加这个插件,可以使用import export语法和解决async await
        }
    }
},
// .browserslistrc
defaults
not IE 11
chrome >= 65
android >= 8
safari >= 12
ios >= 12

参考文章:

微信H5页面加载失败问题排查Unexpected token ‘=’. Expected an opening ‘(’ - 掘金
webpack—使用 Babel 处理 ES6 语法(转成ES5)Babel: 下一代 JavaScript 语法的编译 - 掘金

主要是同事的帮助让我解决这个问题。感谢。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐