vue-cli 如何配置支持IE9以上 (ES6 转 ES5)

在用vue-cli开发环境中遇到根本没有将ES6转成ES5,导致IE浏览器无法识别出现白屏

尝试使用各种babel插件,配置都没有实际作用,在开发环境中还是无效(webpack-dev-server 版本也降低到了2.5.1)

相关代码

webpack.base.conf.js

test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')],
exclude: /node_modules/

.babelrc

{
"presets": [
  ["env", {
    "modules": false,
    "targets": {
      "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
  }
 }],
"stage-2"
  ],
 "plugins": ["transform-vue-jsx", "transform-runtime"]
}


![ package.json][1]
![错误地点][2]

期望在IE10以上跑起来

阅读 10.8k
2 个回答

已解决,解决方案如下

1,更改devtool参数,在index.js中

devtool: 'source-map',

这样我们就能得到具体的错误信息.

2,如果我们还使用了ES6中的API,比如Promise,它将不会得到IE浏览器的支持,所以我们需要引用 'babel-polyfill'

webpack.base.conf.js
entry: {
    normal: ['babel-polyfill', './src/main.js']
},
main.js
import 'babel-polyfill';

3,引用插件是否已经得到正确的编译,我所使用到的插件,比如element-ui,vis等没有得到正确的编译,更改 'webpack.base.conf.js'文件

{
    test: /\.js$/,
    loader: 'babel-loader',
    include: [resolve('src'), resolve('test'), resolve('/node_modules/element-ui/src')]
}
// 前提是你必须安装对应的工具依赖
{
    test: /node_modules[\\\/]vis[\\\/].*\.js$/,
    loader: 'babel-loader',
    query: {
      cacheDirectory: true,
      presets: [ "babel-preset-es2015" ].map(require.resolve),
      plugins: [
        "transform-es3-property-literals", // #2452
        "transform-es3-member-expression-literals", // #2566
        "transform-runtime" // #2566
      ]
    }
  }

上下文环境

Node v8.11.3
npm v5.6.0

package.json 文件

"dependencies": {
    "axios": "^0.18.0",
    "babel-preset-es2015": "^6.24.1",
    "element-ui": "^2.4.5",
    "js-cookie": "^2.2.0",
    "lodash": "^4.17.10",
    "md5": "^2.2.1",
    "moment": "^2.22.2",
    "vee-validate": "^2.1.0-beta.6",
    "vue": "^2.5.2",
    "vue-cookies": "^1.5.6",
    "vue-iconfont": "^1.1.0",
    "vue-router": "^3.0.1",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "autoprefixer": "^7.1.2",
    "babel-cli": "^6.26.0",
    "babel-core": "^6.22.1",
    "babel-helper-vue-jsx-merge-props": "^2.0.3",
    "babel-loader": "^7.1.1",
    "babel-plugin-component": "^1.1.1",
    "babel-plugin-syntax-jsx": "^6.18.0",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-plugin-transform-vue-jsx": "^3.5.0",
    "babel-plugin-transform-es3-member-expression-literals": "^6.22.0",
    "babel-plugin-transform-es3-property-literals": "^6.22.0",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "chalk": "^2.0.1",
    "copy-webpack-plugin": "^4.0.1",
    "css-loader": "^0.28.11",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.4",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^2.30.1",
    "less": "^3.7.0",
    "less-loader": "^4.1.0",
    "node-notifier": "^5.1.2",
    "node-sass": "^4.9.2",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^1.2.0",
    "portfinder": "^1.0.13",
    "postcss-import": "^11.0.0",
    "postcss-loader": "^2.0.8",
    "postcss-url": "^7.2.1",
    "rimraf": "^2.6.0",
    "sass-loader": "^7.0.3",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "style-loader": "^0.21.0",
    "stylus": "^0.54.5",
    "stylus-loader": "^3.0.2",
    "uglifyjs-webpack-plugin": "^1.1.1",
    "url-loader": "^0.5.8",
    "vis": "^4.21.0",
    "vue-loader": "^13.3.0",
    "vue-style-loader": "^3.1.2",
    "vue-template-compiler": "^2.5.2",
    "webpack": "^3.6.0",
    "webpack-bundle-analyzer": "^2.9.0",
    "webpack-dev-server": "^2.7.1",
    "webpack-merge": "^4.1.0"
  },

谢谢 Nine 的帮助

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