【问题标题】:Possible spread error on IE 11 (Webpack, VueJS)?IE 11(Webpack、VueJS)上可能出现传播错误?
【发布时间】:2018-11-18 02:50:37
【问题描述】:

我在 IE 11 上收到此错误:

这是我的 webpack 和 babel 配置:

webpack 配置

const path = require('path');
const webpack = require('webpack');
const { VueLoaderPlugin } = require('vue-loader');
const StylishWebpackPlugin = require('webpack-stylish');
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');

const withLogRocket = process.argv.includes('--with-logrocket');
if (withLogRocket) {
  /* eslint-disable no-console */
  console.info('-> Building with LogRocket enabled.');
  /* eslint-enable */
}

// Base webpack configuration for all environments.
module.exports = {
  context: path.dirname(__dirname),
  entry: {
    app: './src/main.js',
  },
  target: 'web',

  output: {
    filename: '[name].[contenthash].js',
    hashDigestLength: 8,
  },

  resolve: {
    extensions: ['.ts', '.js', '.vue'],
    alias: {
      '@': path.resolve(__dirname, '../src'),
    },
  },

  module: {
    rules: [
      {
        test: /\.js/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
        },
      },
      {
        test: /\.ts$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'babel-loader',
          },
          {
            loader: 'ts-loader',
            options: {
              transpileOnly: true,
            },
          },
        ],
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
      },
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader',
        ],
      },
      {
        test: /\.scss$/,
        use: [
          'style-loader',
          'css-loader',
          'sass-loader',
        ],
      },
    ],
  },

  stats: 'errors-only',

  plugins: [
    new VueLoaderPlugin(),
    new ForkTsCheckerWebpackPlugin({
      tslint: true,
      reportFiles: ['src/**/*.ts'],
    }),
    new StylishWebpackPlugin(),
    new webpack.DefinePlugin({
      USE_LOGROCKET: withLogRocket,
    }),
  ],
};

babelrc 文件

{
    "presets": ["env"],
    "plugins": [
        "transform-es2015-destructuring",
        "transform-object-rest-spread"
    ]
}

我不确定这是由于...sources 传播还是其他原因。我很确定我有babel-transform-object-rest-spread 包,但我仍然不明白为什么会出现这个错误,我也使用了babel-preset-env。正如您在配置中看到的那样,我正在运行一个纯 JS(VueJS、typescript)应用程序。我已经阅读了很多关于使用 polyfill 等的文章,但它并没有帮助我让我们的应用在 IE11 上运行。

【问题讨论】:

  • 请注意,有问题的行有 argument spread,这与 object spread 不同(不确定是否重要)
  • 哦,好吧,我该如何在 IE11 上解决这个问题? :D
  • 您使用的是env 预设,但从未定义 Babel 应该为什么环境生成代码(所以我假设在这种情况下不支持 IE 11)。

标签: javascript vue.js webpack internet-explorer-11 babeljs


【解决方案1】:

您正在使用 env 预设,但从未定义 Babel 应该为什么环境生成代码(所以我假设在这种情况下不支持 IE 11)。

没有任何配置选项,babel-preset-env 的行为与 babel-preset-latest(或 babel-preset-es2015、babel-preset-es2016 和 babel-preset-es2017 一起)完全相同。

所以只需添加将 targets 属性设置为类似的选项对象

"browsers": [ "last 1 version", "ie >= 11" ]

像这样:

{
    "presets": ["env", {
      "targets": {
        "browsers": [ "last 1 version", "ie >= 11" ]
      }
    }],
    "plugins": [
        "transform-es2015-destructuring",
        "transform-object-rest-spread"
    ]
}

我也强烈建议你尽快切换到 Babel 7。

【讨论】:

  • 效果不佳。我仍然有与上述相同的错误。
  • @TheBassman 这是因为babel-loader 默认情况下使用.babelrc 文件。仅在 babel-loader>=8.0.0 中进行了更改/修复(这是针对 Babel 7(我建议尽快切换到))。对于 Babel 6.x 的修复:github.com/babel/babel-loader/issues/552#issuecomment-355341074
  • 抱歉,我的babel-core 升级到7.1.6,但还是没有用..
  • 你需要更新所有babel相关的包。 babeljs.io/docs/en/v7-migration 还记得将babel-loader 升级到版本 8.x。你可能会在你的 package.json 中找到其他与 babel 相关的包。您还需要更新 babel-plugins(我建议您先尝试不使用任何插件)。
  • 另外你需要调整你的.babelrcstackoverflow.com/questions/52092739/…
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多