vue中使用babel-polyfill解决低版本浏览器不兼容问题
Vue-cli3 项目在安卓低版本系统和 IE 上白屏问题解决
注意:在vue cli3 默认手脚框架也可以兼容低版本问题
presets: [
'@vue/cli-plugin-babel/preset'
],
根目录下新建 .babelrc 文件,这一步项目没有的话可以省掉
{ "presets": ["@babel/preset-env"], "plugins": [ "@babel/plugin-transform-runtime" ] }
修改 babel.config.js
module.exports = { presets: [ [ '@vue/app', { useBuiltIns: 'entry', polyfills: [ 'es6.promise', 'es6.symbol',
"es6.array.iterator",
"es6.object.assign",
"es6.let"
] } ] ] }
修改 vue.config.js
module.exports = { transpileDependencies: ['webpack-dev-server/client'], chainWebpack: config => { config.entry.app = ['@babel/polyfill', './src/main.js']; } }
修改 main.js 文件
import '@babel/polyfill' import Es6Promise from 'es6-promise' require('es6-promise').polyfill() Es6Promise.polyfill()
安装依赖
npm install --save-dev @babel/core @babel/plugin-transform-runtime @babel/preset-env es6-promise @babel/polyfill babel-plugin-transform-remove-console
上解决方法:
修改vue.config.js
这里通过add方法,配置babel需要另外转换的文件
const path = require('path'); function resolve(dir) { return path.join(__dirname, '.', dir); } module.exports = { ... // 其他配置 publicPath: process.env.NODE_ENV === "production" ? "./" : "./", // 默认情况下 babel-loader 会忽略所有 node_modules 中的文件。 // 如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来 transpileDependencies: ['node_modules/webpack-dev-server/client'], chainWebpack: config => { config.module.rule('compile') .test(/\.js$/) .include .add(resolve('src')) .add(resolve('test')) .add(resolve('static')) .add(resolve('node_modules/webpack-dev-server/client')) .add(resolve('node_modules')) .end() .use('babel') .loader('babel-loader') .options({ presets: [ ['@babel/preset-env', { modules: false }] ] }); } }
至此,IE、安卓5.1、安卓6.0上页面都能正常访问了
vuex requires a Promise polyfill in this browser.
他说出了问题出现的原因,就是ie9和一些低版本的高级浏览器对es6新语法并不支持,也说出了解决办法
为了方便看帖子同学的使用,再重敲一遍命令行:npm install --save-dev babel-polyfill
babel-polyfill用正确的姿势安装之后,引用方式有三种:
1.require("babel-polyfill");
2.import "babel-polyfill";
3.module.exports = {
entry: ["babel-polyfill", "./app/js"]
}
;
注:第三种方法适用于使用webpack构建的同学,加入到webpack配置文件(webpack.config.js)entry项中
重新执行构建命令,在低版本的浏览器中就可以正常打开页面了。
解决方案如下:
方案1:在 webpack.config.js 文件中,entry 入口处修改,加入即可
"babel-polyfill":"babel-polyfill",//用来解决的兼容性
例如:
entry: { "babel-polyfill":"babel-polyfill",//用来解决的兼容性 app: path.resolve(__dirname, config.entry.module + "/app.js"), vendor: config.entry.vendor },
方案2:不修改webpack的情况下,在你的主入口文件头部加入,例如:app.js中加入即可
import 'babel-polyfill'
例如:
import 'babel-polyfill' import Vue from 'vue'; Vue.config.debug = true;
方案3:也就是使用cdn的资源,以js的文件加入到html页面:例如:
<script src="https://cdn.bootcss.com/babel-polyfill/6.23.0/polyfill.min.js"></script>
Vue2.0 之 自带浏览器里无法打开(兼容处理) - 解决方案 https://blog.csdn.net/qq_16559905/article/details/70238583
第二种方式:vue 解决ie9的兼容问题
当vue遇见ie9的时候,部署到服务器之后,打开居然是一片空白,vue是支持ie9的,这个时候就需要来一波兼容了
1、首先npm install --save babel-polyfill
2、然后在main.js
中的最前面引入babel-polyfill
import 'babel-polyfill'
3、在index.html 加入以下代码(非必须)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
4、在config中的webpack.base.conf.js
中,修改编译配置
entry:{ app:['babel-polyfill','./src/main.js'] }
本地文件:E:\www\svn\project\vue_manage_test
当然,如果你只用到了 axios
对 promise
进行兼容,可以只用 es6-promise
npm install es6-promise --save
在 main.js
中的最前面 引入
import 'es6-promise/auto'
完成以上配置,ie9兼容就完成了
解决vue在ie9中的兼容问题 https://blog.csdn.net/landl_ww/article/details/79149461
vue-cli2、vue-cli3配置babel 兼容低版本安卓5.0: https://blog.csdn.net/Maggie_01/article/details/101159448?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4.pc_relevant_default&spm=1001.2101.3001.4242.3&utm_relevant_index=7
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2013-07-02 图片滚动切换效果插件