繁体   English   中英

将状态添加到我的 React 设置会导致“./src/Main.js 模块构建失败”

[英]Adding State to my React setup causes "./src/Main.js Module build failed"

我正在尝试使用一些 Button 组件制作一个简单的 React 应用程序。

我希望能够毫无错误地向我的应用程序添加state 但是当我将状态添加到我的应用程序时,我的控制台中出现以下错误:

SyntaxError: C:\Users\Roland\React_apps\calculator-project\src\Main.js: Support for the experimental syntax 'classProperties' isn't currently enabled (4:8):

[0m [90m 2 | [39m[0m
[0m [90m 3 | [39m[36mclass[39m [33mMain[39m [36mextends[39m [33mComponent[39m {[0m
[0m[31m[1m>[22m[39m[90m 4 | [39m    state [33m=[39m {[0m
[0m [90m   | [39m         [31m[1m^[22m[39m[0m
[0m [90m 5 | [39m       display[33m:[39m [32m"0"[39m[33m,[39m[0m
[0m [90m 6 | [39m       equation[33m:[39m [32m""[39m[0m
[0m [90m 7 | [39m   }[33m;[39m[0m

Add @babel/plugin-proposal-class-properties (https://git.io/vb4SL) to the 'plugins' section of your Babel config to enable transformation.
    at Object.raise

我试过运行npm i @babel/plugin-proposal-class-properties --save-dev来安装建议的包,但它没有改变任何东西。 我也进入了 .babelrc 并添加了:

{
    "plugins": [
        "babel/plugin-proposal-class-properties"
    ]
}

也没有结果。

我通过检查其他线程知道我应该发布我的package.json

{
  "name": "calculator-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack-dev-server --open --hot --mode development",
    "build": "webpack --mode production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.7.7",
    "@babel/plugin-proposal-class-properties": "^7.7.4",
    "@babel/preset-env": "^7.7.7",
    "@babel/preset-react": "^7.7.4",
    "babel-loader": "^8.0.6",
    "css-loader": "^3.4.2",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "style-loader": "^1.1.2",
    "webpack": "^4.41.5",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.10.1"
  }
}

webpack.config.js

const HtmlWebPackPlugin = require("html-webpack-plugin");
module.exports = {
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      },
      {
        test: /\.html$/,
        use: [
          {
            loader: "html-loader"
          }
        ]
      }
    ]
  },
  plugins: [
    new HtmlWebPackPlugin({
      template: "./src/index.html",
      filename: "./index.html"
    })
  ]
};

我尝试使用 Create React App 重新制作应用程序(而不是我当前的自定义设置),但错误没有出现在那里。 虽然我真的不需要解决这个问题,但我很好奇出了什么问题。

有人有时间解释一下吗?

编辑:这是main.js代理app.js的一部分:

import React, { Component } from "react";

class Main extends Component {
    state = {
        display: "0",
        equation: ""
    };

    inputNum(e) {
        console.log(e.target.value);
    }

    render() {
        return (
            <div>
                <Button
                    value="/"
                    display="/"
                    class="button col-4 row-1"
                    // click={this.inputNum}
                >
                    /
                </Button>
                // ... more buttons ...
                <Button
                    value="."
                    display="."
                    class="button col-3 row-5"
                    click={this.inputNum}
                >
                    .
                </Button>
            </div>
        );
    }
}

const Button = props => (
    <button
        type="button"
        id={props.id}
        value={props.value}
        className={props.class}
        onClick={props.click}
    >
        {props.display}
    </button>
);

export default Main;

可能只是你的.babelrc一个错字,我认为@是必需的。

{
    "plugins": [
        "@babel/plugin-proposal-class-properties"
    ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM