如题,nuxt项目使用npm run build 构建后在ie浏览器所有版本中均不能正常显示页面
问题出现在webpack打包好生成的vendor.js和manifest.js文件,错误如下图:
相关代码
nuxt.confing.js
build: {
/*
** Run ESLint on save
*/
//babel:{
//presets:['babel-polyfill'],
//},
extend (config, { isDev, isClient, isServer }) {
if (isDev && isClient) {
config.entry['polyfill'] = ['babel-polyfill']
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
//if (isServer) {
// config.externals = [
// nodeExternals({
// whitelist:[/es6-promise|\.(?!(?:js|json)$).{1,5}$/i, /^vue-echarts/]
// })
// ]
//}
}
}
我在nuxt.config.js的babel配置中加过babel-polyfill,es2015,结果build的时候直接报错,使用 stage-0 后build vendor.js文件变小了,但是在ie环境下依然不能正常显示
package.json如下:
{
"name": "cpc",
"version": "1.0.0",
"description": "Nuxt.js project",
"author": "",
"private": true,
"scripts": {
"dev": "nuxt",
"build": "nuxt build && nuxt start",
"start": "PORT=8181 nuxt start",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "npm run lint"
},
"dependencies": {
"@xkeshi/vue-qrcode": "^1.0.0",
"axios": "^0.18.0",
"babel-preset-es2015": "^6.24.1",
"echart": "^0.1.3",
"nuxt": "^1.0.0",
"vue-awesome-swiper": "^3.1.3",
"vue-echarts": "^3.0.9",
"vue-style-loader": "^4.1.0"
},
"devDependencies": {
"babel-eslint": "^8.2.1",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015-ie": "^6.7.0",
"babel-preset-stage-0": "^6.24.1",
"eslint": "^4.15.0",
"eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.7.1",
"eslint-plugin-vue": "^4.0.0",
"webpack-node-externals": "^1.7.2"
},
"config": {
"nuxt": {
"host": "",
"port": ""
}
}
}
自问自答一下,看了网上关于兼容性的解决方案,发现还是node_modules中依赖文件的问题,webpack打包解析的时候不会把node_modules中的依赖文件进行解析。vendor.js还是缓存项目依赖文件的脚本,所以会出现低版本浏览器不兼容的问题。解决方法就显而易见:1.改写使用es6语法的依赖文件。2.使用其他插件。3。将依赖文件写成组件直接引用。只要不在缓存文件中去解析到es6语法,就不会存在兼容性的问题了。