Как удалить функции стрелок из вывода веб-пакета - PullRequest
0 голосов
/ 04 января 2019

После запуска моего кода через веб-пакет он содержит функции стрелок. Мне нужен код для работы в ie11, поэтому мне нужно избавиться от функций стрелок.

Я использую babel-loader для всех файлов .js.

Я написал загрузчик для проверки кода для функций стрелок и запустил его после загрузчика babel и не получил никаких функций стрелок, поэтому я знаю, что вывод из babel хорош.

Я также пробовал babel-polyfill и плагин babel для преобразования функций стрелок.

Поскольку я знаю, что babel-loader выводит хороший код, я подозреваю, что это может быть плагин, но я не могу просто отключить их для тестирования, поскольку это нарушает сборку.

Плагины Webpack, используемые в dev:

  plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../config/dev.env')
    }),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
    new webpack.NoEmitOnErrorsPlugin(),
    // https://github.com/ampedandwired/html-webpack-plugin
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true
    }),
    // copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.dev.assetsSubDirectory,
        ignore: ['.*']
      }
    ])
  ]

Проблема также появляется в prod, но исправление в dev должно сказать мне, как исправить это также в prod.

Я не знаю где-либо еще, откуда могла бы поступать функция стрелки, поэтому я ожидаю, по сути, получить код, который работает на ie11, но есть функции стрелки, идущие откуда-то, поэтому она не работает.

Это не мой код, поэтому я не могу просто опубликовать все это. Однако я могу опубликовать соответствующие фрагменты, но не знаю, в чем проблема, поэтому пока не знаю, что уместно.

1 Ответ

0 голосов
/ 04 января 2019

Вы можете использовать Babel. Поскольку функции стрелок поставляются с es6, вы можете использовать babel для преобразования es5. Также эта ссылка может помочь Webpack не преобразовывать ES6 в ES5 .

Приведенный ниже конфиг webpack - это то, что я использовал для babel.

module: {
   loaders: [
     {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
           babelrc: false,
           presets: ["@babel/preset-env", "@babel/preset-react","es2015"]
         }
     }
  ]
}     
...