IE11运行npm run dev报SCRIPT1014: Invalid character错误
开发服务启动后仅IE11报
SCRIPT1014: Invalid character问题排查 复现场景
- 执行
npm run dev启动开发服务后,仅IE11访问页面时抛出SCRIPT1014: Invalid character语法报错,Chrome、Edge等其余浏览器访问、运行完全正常 - 执行
npm run start命令启动服务时,所有浏览器(含IE11)访问运行状态无异常
可落地的排查方向
- 首先比对两个启动命令对应的构建配置差异:
npm run dev基本是开发模式专属配置,默认会开启模块热替换、未压缩源码映射、开发态专属运行时注入,这类代码默认不会走生产链路的全量语法转译、兼容补丁注入流程,直接输出未做IE11兼容处理的ES6+语法、带特殊Unicode字符的内容,天然容易触发IE11解析报错 - 检查开发模式的构建目标兼容性设置:Vite、Webpack等构建工具默认的开发态构建目标都是面向现代浏览器的
esnext版本,不会对dev server直接返回的代码做IE11兼容转译;而多数项目里的npm run start脚本是指向本地运行已经完成全量兼容处理的生产打包产物,因此不会暴露兼容问题 - 精准定位报错代码位置:打开IE11开发者工具,从控制台报错入口直接跳转到对应触发文件的行号,重点排查两类高频问题:一是dev模式下被直接注入代码块的零宽空格、emoji类特殊字符,二是原生ES Module的import/export语法——这类规则是IE11完全不支持的,解析时很容易触发非法字符类报错
- 校验开发模式的资源转译规则:检查dev配置中是否默认把
node_modules目录下的第三方依赖排除在Babel/TS转译范围外,若第三方依赖自带IE11不兼容的语法,开发模式直接返回原代码就会触发报错,生产构建全量转译后问题就会消失;同时确认dev server返回JS资源时的MIME类型配置,避免因类型识别错误触发异常解析
内容的提问来源于stack exchange,提问作者Đức Nguyễn
相关产品推荐
相关产品推荐

