在IE11上无法使用Webpack JavaScript

时间:2018-11-23 10:59:58

标签: javascript webpack babeljs

我有一个无法在IE11上运行javascript的网站

我是webapck的新手,所以这是我的 webpack.config.js

的一部分
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin')
var babelenv = require('babel-preset-env');
const webpack = require('webpack');

module.exports = {
  devtool: "source-map",
  mode: 'production',
  entry: {
    main: "./assets/index.js",
    app: [
      "./node_modules/bootstrap/dist/js/bootstrap.min.js",
      "./node_modules/popper.js/dist/popper.min.js",
      "./node_modules/js-cookie/src/js.cookie.js",
      "./node_modules/jqueryrouter/dist/js/jquery.router.min.js",
      "./assets/js/app.js",
      "./node_modules/ekko-lightbox/dist/ekko-lightbox.min.js"
    ]
    catalogue: [
      "./assets/js/catalogue.js",
    ]
  },

  output: {
    path: path.resolve(__dirname, "htdocs/assets"),
    filename: "js/[name].js",
    publicPath: "/assets/"
  },


  module: {
    rules: [{
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [babelenv]
          }
        }
      },
      {
        test: /\.s?[c|a]ss$/,
        use: [
          "style-loader",
          MiniCssExtractPlugin.loader,
          "css-loader",
          "postcss-loader",
          "sass-loader"
        ]
      }
    ]
  }
};
  

.babelrc

{
  "presets": [
    ["env", {
      "targets": {
        "browsers": ["last 2 versions", "ie >= 11"]
      },
      "useBuiltIns": true
    }],

  ]
}

我想念的是什么? javascript错误是在简单函数和popper.js中触发的

我不太确定是否正确使用param devtool,是否正确执行.babalrc以及代码是否与ie11兼容

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您缺少babel-polyfill

答案 1 :(得分:0)

困扰我的是:

rules: [{
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader',
      options: {
        presets: [babelenv]
      }
    }
  },

不幸的是,我不知道您的IE控制台中到底有什么,您的错误消息是什么,但是我有一种直觉,您的node_modules中有一些用ES6编写的包,而您的webpack文件忽略了每个node_module包,并且仅将babel预设应用于您的代码。 如果您可以通过IE控制台向我显示错误消息,则可以提供更多帮助。

如果您设法找到一个给您带来麻烦的软件包,则可以尝试通过以下方式将其包含在babal移植过程中:

  {
    test: /\.js$/,
    exclude: /node_modules\/(?!(your-es6-package|another-package)\/).*/,
    use: [
      { loader: 'babel-loader' }
    ]
  }

是的,添加缺少的babel-polyfill也有帮助。