Не удалось построить модуль реакции на непредвиденный токен Babel

У меня есть эта страница:

import React, { Fragment } from "react";
import "./Loader.css";

const Loading = ({ loadingMsg, styling }) => {
  return (
    <Fragment>
      <div className="loader">
        <p style={styling}>{loadingMsg}</p>
      </div>
    </Fragment>
  );
};

export default Loading;

Я не знаю, почему, когда я запускаю свой проект, он выдает эту ошибку:

ERROR in ./src/components/Loading/Loading.js
Module build failed (from ./node_modules/babel-loader/lib/index.js): 
Unexpected token (6:4)

мой файл babelrc:

{
  "presets": ["@babel/preset-env", "@babel/preset-react"],
  "plugins": ["@babel/plugin-proposal-class-properties"]

}

и мой конфигурационный файл webpack:

const path = require('path')

module.exports = {
  target: 'web',
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'build'),
    filename: 'bundle.js'
  },
  resolve: { extensions: ['.js', '.jsx'] },
  devServer: {
    port: 3000,
    publicPath: "/",
    contentBase: "./public",
    hot: true
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
      },
      {
        test: /\.html$/i,
        loader: 'html-loader',
      },
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader'],
      },
      {
        test: /\.svg$/,
        loader: 'svg-inline-loader'
      },
      {
        test: /\.(png|jpe?g|gif)$/i,
        use: [
          {
            loader: 'file-loader',
          },
        ],
      },
      {
        test: /\.svg$/,
        use: [
          {
            loader: 'svg-url-loader',
          },
        ],
      },
    ],
  },
};

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


person Ganzo    schedule 18.05.2020    source источник
comment
Похоже на проблему с конфигурацией Babel, т.е. он не может интерпретировать JSX. Как вы настроили среду своего проекта? Вы использовали приложение create-реагировать?   -  person paolostyle    schedule 18.05.2020
comment
да, я создаю его с помощью приложения create-react-app, я помещаю свой веб-пакет и конфигурацию Babel в основной пост!   -  person Ganzo    schedule 18.05.2020
comment
Я смущен. Если бы вы использовали приложение create-react-app, у вас не было бы собственной конфигурации веб-пакета, если бы вы не извлекли его, но даже тогда эта извлеченная конфигурация правильно настроена для интерпретации JSX, и тот, который вы опубликовали, определенно не является CRA. Как вы начинаете свой проект? yarn start который запускает react-scripts start?   -  person paolostyle    schedule 18.05.2020
comment
Итак, вы говорите мне, что если я использую CRA, мне не нужно настраивать свою собственную конфигурацию веб-пакета, потому что я реагирую сам, где я могу увидеть оригинал?   -  person Ganzo    schedule 18.05.2020
comment
Ну... да, в этом весь смысл создания-реагирования-приложения. Он был создан для того, чтобы разработчикам не приходилось заниматься конфигурацией, а просто начать разработку. Все, что связано с Babel и Webpack, скрыто за модулем react-scripts. Вы не найдете оригинал, если не извлечете, чего делать не следует (если только вы не хотите просто узнать, как он выглядит, в этом случае вы можете либо проверить его на github, либо запустить yarn eject в отдельном проекте, так как это необратимо ).   -  person paolostyle    schedule 18.05.2020
comment
Спасибо, мужик! я перезапускаю свой проект с помощью метода CRA и не создаю свой собственный файл конфигурации веб-пакета, и все работает!   -  person Ganzo    schedule 19.05.2020


Ответы (1)


Вам нужно добавить babel-preset-env и babel-preset-react в свой проект следующим образом:

npm install --save-dev @babel/preset-env @babel/preset-react 

Затем создайте файл .babelrc с этой конфигурацией:

module.exports = {
    presets: ["@babel/preset-env", "@babel/preset-react"],
};
person Bassem    schedule 18.05.2020
comment
какие версии babel и @babel/presets у вас есть? Кроме того, вы используете приложение Create-React-App? - person Bassem; 18.05.2020
comment
да create-реагировать-приложение и @babel/preset-реагировать: ^ 7.9.4, - person Ganzo; 18.05.2020
comment
какая версия вашего @babel/core? - person Bassem; 18.05.2020
comment
@babel/core: ^7.9.6, я использую самые последние версии для всех - person Ganzo; 18.05.2020
comment
Я бы посоветовал вернуться к версии 7.0.0 и посмотреть, решит ли это проблему. - person Bassem; 18.05.2020