【问题标题】:React - Add @babel/preset-react (https://git.io/JfeDR) to the 'presets' section of your Babel config to enable transformationReact - 将 @babel/preset-react (https://git.io/JfeDR) 添加到 Babel 配置的“预设”部分以启用转换
【发布时间】:2021-01-25 06:49:38
【问题描述】:

我想在我的表单中使用 react-validation 组件 Input。这就是为什么我将它导入并在表单中使用:

<Input className="form-control"
       type="text"
       placeholder="name"
       value={props.data.creatingUser.createName}
       name="createName"
       id="createName"
       onChange={props.handleAddChange}
required/>

当我尝试使用 npm start 运行应用程序时,我在控制台中收到以下错误:

语法错误: E:\Projects\personal\rental-application\node_modules\react-validation\src\components\input\index.js: 当前未启用对实验性语法“jsx”的支持 (6:3):

const Input = ({ error, isChanged, isUsed, ...props }) => (

|   ^        <input {...props} {...( isChanged && isUsed && error ? {        className: `is-invalid-input ${props.className}`
 } : { className: props.className } )} /> 

我没有明确做过任何babel配置,我的package.json文件有如下内容:

{
  "name": "rental-application",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.9",
    "@testing-library/react": "^11.2.3",
    "@testing-library/user-event": "^12.6.0",
    "jquery": "^3.5.1",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.1",
    "web-vitals": "^0.2.4",
    "popper.js": "1.16.1",
    "css-loader": "^5.0.1",
    "react-bootstrap": "^1.4.3",
    "sass-loader": "^10.1.1",
    "style-loader": "^2.0.0",
    "axios": "^0.21.1",
    "react-notifications": "^1.7.2",
    "react-fontawesome": "^1.7.1",
    "react-table": "^6.11.4",
    "react-validation": "^3.0.7"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/plugin-transform-async-to-generator": "^7.12.1",
    "react-router-dom": "^5.2.0",
    "react-table-6": "^6.11.0"
  }
}

我的项目结构:

++node_modules

++public
+++index.html
+++manifest.json
+++robots.txt

++src
+++App.js
+++index.js
+++index.css

++package.json
++package-lock.json

你可以看到我没有使用任何其他配置,并且我已经使用 create-react-app 命令启动了项目。

【问题讨论】:

    标签: reactjs babel-loader


    【解决方案1】:

    react-validation 中的输入位于 build 文件夹下。但从错误看来,您没有正确导入 Input: SyntaxError: E:\Projects\personal\rental-application\node_modules\react-validation\src\components\input\index.js: 当前未启用对实验语法“jsx”的支持( 6:3):

    您能检查一下您的进口声明吗?应该是这样的:

    import Input from "react-validation/build/input";
    

    【讨论】:

    • 正确解决方案!
    【解决方案2】:

    第一个提案

    按照this 线程中的建议,运行 bundle exec rails webpacker:install:react。它会自动将该位添加到 babel.config.js 中。您无需手动执行任何操作。

    。 . . . . .

    第二个提案

    您应该按照错误消息中的建议安装@babel/preset-react

    使用 npm:

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

    或使用纱线:

    yarn add @babel/preset-react --dev

    请访问我们的网站@babel/preset-react 了解更多信息。 参考: https://github.com/babel/babel/tree/master/packages/babel-preset-react

    。 . . . . .

    第三次提案

    或者,如果第一个提案不起作用,正如this thread 中所建议的那样,您应该更新babel.config.js,这样它就会起作用。所以按照建议更新文件:

      presets: [
        ['@babel/preset-env', {targets: {node: 'current'}}],
        ['@babel/preset-react', {targets: {node: 'current'}}] // add this
      ]
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 2016-02-04
      • 2016-08-30
      • 2023-01-05
      • 1970-01-01
      • 2018-10-26
      • 2019-07-30
      相关资源
      最近更新 更多