webpack打包生成的manifest.js和vonder.js文件在IE浏览器环境下报语法错误?

如题,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": ""
    }
  }
}

希望大神给予指导

阅读 5.1k
1 个回答

自问自答一下,看了网上关于兼容性的解决方案,发现还是node_modules中依赖文件的问题,webpack打包解析的时候不会把node_modules中的依赖文件进行解析。vendor.js还是缓存项目依赖文件的脚本,所以会出现低版本浏览器不兼容的问题。解决方法就显而易见:1.改写使用es6语法的依赖文件。2.使用其他插件。3。将依赖文件写成组件直接引用。只要不在缓存文件中去解析到es6语法,就不会存在兼容性的问题了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题