Почему babelConfig не работает на бис в Webpack? - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу добавить поддержку асинхронных / ожидающих функций для моего проекта.

Я устанавливаю

    "@babel/core": "^7.2.0",
    "@babel/plugin-transform-runtime": "^7.2.0",
    "@babel/preset-env": "^7.2.0",
    "@babel/preset-es2015": "^7.0.0-beta.53",
    "@babel/preset-stage-2": "^7.0.0",
    "@babel/runtime": "^7.2.0",

Это мое webpack.config.js

const Encore = require('@symfony/webpack-encore');

Encore
    .setOutputPath('public/build')

    .setPublicPath('/build')

    .addEntry('app', './assets/app.js')

    .enableSourceMaps(!Encore.isProduction())

    .cleanupOutputBeforeBuild()

    .enableBuildNotifications()

    .enableVueLoader()

    .configureBabel(function(babelConfig) {
       babelConfig.presets.push('@babel/preset-env');
       babelConfig.presets.push('@babel/preset-stage-2');
       babelConfig.plugins.push('@babel/plugin-transform-runtime');
    })

;

const config = Encore.getWebpackConfig();

config.externals = {

    mode: 'development',
    // global app config object
    config: JSON.stringify({
        apiUrl: 'http://localhost:80',
        devServer: {
            public: 'http://localhost:3000',
            disableHostCheck: true,
        },
    })
};

config.node = {
    fs: "empty"
};


module.exports = config;

Когда яЗапустите сервер dev, я получаю сообщение об ошибке.

    Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Duplicate plugin/preset detected.
If you'd like to use two separate instances of a plugin,
they need separate names, e.g.

  plugins: [
    ['some-plugin', {}],
    ['some-plugin', {}, 'some unique name'],
  ]

Не могу понять, в чем проблема.

Я также создал файл .babelrc и записал в него ту же конфигурацию.Но, к сожалению, это не помогло (

1 Ответ

0 голосов
/ 05 декабря 2018

Используйте .babelrc для изменения конфигурации Babel, как это.Этот файл должен находиться в корневом каталоге вашего проекта

{
  "plugins": ["@babel/plugin-transform-runtime"],
  "presets": [
    [
      "@babel/preset-env",
      ...
    ],
    ...
  ]
}

. Затем удалите его из вашего webpack.config.js

.configureBabel(function(babelConfig) {
   babelConfig.presets.push('@babel/preset-env');
   babelConfig.presets.push('@babel/preset-stage-2');
   babelConfig.plugins.push('@babel/plugin-transform-runtime');
})
...