ошибка при реагировании: файлы плагинов / пресетов не могут экспортировать объекты, только функции - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь установить новый реактивный проект, но столкнулся с некоторыми проблемами.

Теперь, после решения многих проблем, я застрял с этой проблемой:

 ERROR in ./script.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Plugin/Preset files are not allowed to export objects, only functions. In D:\react_project\node_modules\babel-preset-es2015\lib\index.js

Я столкнулся с этой проблемой после установки @ babel / core версии 7.

Вот мой package.json:

{
  "name": "react_project",
  "version": "1.0.0",
  "description": "first project on react",
  "main": "index.js",
  "scripts": {
    "it": "webpack-dev-server --hot"
  },
  "author": "azima",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^8.0.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "webpack": "^4.17.1",
    "webpack-dev-server": "^3.1.7"
  },
  "dependencies": {
    "react": "^16.4.2",
    "react-dom": "^16.4.2",
    "webpack-cli": "^3.1.0"
  }
}

webpack.config.js:

var path = require('path');
module.exports = {
    entry: './script.jsx',
    output: {
        path: path.resolve(__dirname,''),
        filename: 'transpiled.js'
    },
    module: {
        rules: [
            {
                test: /\.jsx?$/,
                loaders: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    presets: ['es2015', 'react']
                }   
            }   
        ]
    }
}

Что означает ошибка и как ее устранить?

1 Ответ

0 голосов
/ 12 сентября 2018

Извините, я не видел этот вопрос ранее, но вот проблема и решение для нее: "babel-loader": "^8.0.1" работает с "@babel/core": "^7.0.0". Babel 7 перешел к пакетам с определенными областями и внес некоторые изменения в API плагина, поэтому ваша проблема в том, что вы смешиваете старый и новый babel.

babel-preset-es2015 больше не требуется, поскольку существует @babel/preset-env, который заботится обо всех новых функциях, которые могут вам понадобиться, в зависимости от целевой платформы (см. Ссылку для параметров конфигурации).

babel-preset-react (предустановка babel v6) теперь @babel/preset-react (предустановка v7).

И ваша конфигурация загрузчика веб-пакетов теперь должна выглядеть следующим образом:

{
    test: /\.jsx?$/,
    loader: 'babel-loader',
    exclude: /node_modules/,
    options: {
        presets: ['@babel/preset-env', '@babel/preset-react']
    }
}
...