如何解决移动端JavaScript的Uncaught SyntaxError: Unexpected token =错误
解决移动浏览器中类静态属性的语法错误问题
你遇到的Uncaught SyntaxError: Unexpected token =错误,根源在于**类的公共静态字段语法(static 变量名 = 值)**是ES2022新增的特性,不少旧版本移动浏览器(比如旧版Android Chrome、iOS Safari)未实现该语法支持,而桌面浏览器更新更及时,所以能正常运行。
下面提供两种可行的解决方法:
方法一:修改代码为兼容语法
把静态属性的定义移到类外部进行赋值,这是所有浏览器都支持的传统写法:
export class Global { static getdata() { return this.data = { name: this.name, userid: this.userid, admin: this.admin, staticname: this.staticname, vrecording: this.vrecording, arecording: this.arecording } } } // 在类外部初始化静态属性 Global.PeersIndex = new Array(); Global.AudioTracks = new Array(); Global.AudioTrack = undefined; Global.silenceAudioTrack = undefined; Global.client = undefined; Global.id = undefined; Global.mediastream = undefined; Global.MediaVideoStream = undefined; Global.MediaAudioStream = undefined; Global.VisualMedia = undefined; Global.capturestream = null; Global.MixAudio = new Event('onAudioMix'); Global.username = undefined; Global.userid = undefined; Global.admin = undefined; Global.staticname = undefined; Global.vrecording = undefined; Global.arecording = undefined; Global.data = undefined; Global.videoInput = new Array(); Global.audioInput = new Array(); Global.audioOutput = new Array(); Global.Constraints = { audio: false, video: false }; Global.camAvailable = false; Global.micAvailable = false;
方法二:用Babel转译代码
如果你的项目使用Webpack、Vite等构建工具,可以通过Babel将ES2022语法转译为兼容旧浏览器的ES5语法:
- 确保安装
@babel/preset-env并配置兼容目标(比如targets: { "browsers": ["last 2 versions", "iOS >= 12", "Android >= 8"] }) - 最新版本的
@babel/preset-env已经默认支持类静态字段的转译,无需额外配置插件
若项目是纯原生JS,优先选择方法一,无需额外依赖就能解决问题。
内容的提问来源于stack exchange,提问作者maranR
相关产品推荐
相关产品推荐

