现象:页面在安卓10以下的系统显示不出来。
控制台打印显示:
Uncaught runtimeerrors:
ERROR
Unexpected token . SyntaxError: Unexpected token
at
Object../node modules/unplugin/dist/unpluginName=unplugin-vue-
components!./node modules/unplugin/dunpluginName=unplugin-auto.import!./node modules/babel.loader/lib/index.js??clonedRuleSet-40.use[0]!./node modules/vue.loader/dist/index.js??ruleSet[0].use[0]!./src/views/chat/¡vue&type=script&setup=true&lang=js
([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app)
at webpack require([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app)
at webpack require([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app).
at fn([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app)
at eval(webpack-internal:///./src/views/chat/index.vvue&type=script&setup=true&lang=js:6
at
Function.webpack require([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app).
at eval(webpack-internal:///./src/views/chat/index.vvue&type=script&setup=true&lang=js:1
at
Module../src/views/chat/index.vue?vue&type=script&setup=true&lang=js
([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app)
atwebpack require([http://192.168.121.150:8080/js/app](http://192.168.121.150:8080/js/app).
at fn
([http://192.168.121.150:8080/js/appat](http://192.168.121.150:8080/js/appat)
at eval(webpack-ternal:///./src/views/chat/index.vue:4:10
如果这个问题只在Android 10及以下的系统上出现,那么可能的原因是这些系统上的浏览器不支持某些较新的JavaScript语法特性。这种情况下,通常需要确保代码被适当地转译(transpile)以兼容旧版本的JavaScript引擎。
1、检查Babel配置:
确保你的项目中使用了Babel,并且配置了适当的presets,如@babel/preset-env。这个preset可以根据目标浏览器的环境来转译代码。
确保.browserslistrc文件或package.json中的browserslist字段配置了正确的目标浏览器范围,包括Android 10及以下的浏览器。
- 更新browserslist配置:(package.json),新增了"Android >= 4.4.4",
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"Android >= 4.4.4",
"not ie 11"
]
2 安装并使用core-js和@babel/preset-env:
如果你还没有安装core-js,你应该安装它,因为它包含了必要的polyfills。然后,你可以在babel.config.js中显式地设置@babel/preset-env预设,并指定你想要使用的core-js版本:
npm install --save core-js@3
npm install --save-dev @babel/preset-env
(babel.config.js文件)
module.exports = {
presets: [
[
'@babel/preset-env',
{
useBuiltIns: 'usage',
corejs: 3, // 指定core-js版本
},
],
'@vue/cli-plugin-babel/preset',
],
};
这里的useBuiltIns: 'usage'选项会告诉Babel按需自动引入所需的polyfills。
指定core-js的版本为3是因为core-js有几个主要版本,每个版本都有不同的特性和bug修复。截至2023年4月,core-js的版本3是最新的稳定版本,它包含了最全面的ECMAScript标准库的polyfills,包括ES5、ES6/ES2015、ES2016、ES2017、ES2018、ES2019、ES2020及之后标准的新特性。
当你使用@babel/preset-env时,你可以指定core-js的版本来确保Babel使用正确的polyfills版本。如果你不指定版本,Babel可能不会使用polyfills,或者使用的是默认的、可能不是最新的版本。
3 清除缓存:
修改配置后,你可能需要清除旧的构建缓存。Vue CLI有时会缓存旧的构建结果,这可能会阻止新的配置生效。
npm run serve -- --reset-cache
# 或者
vue-cli-service serve --reset-cache
4 重新安装node_modules:
有时候,node_modules目录中的依赖可能会出现问题。你可以尝试删除node_modules目录和package-lock.json文件,然后重新运行npm install来安装依赖。
网友评论