简体   繁体   English

解析错误:找不到模块“@babel/preset-react”

[英]Parsing error: Cannot find module '@babel/preset-react'

I have a React project.我有一个 React 项目。 In the first line in every.js file where I import React, I am getting this error: Parsing error: Cannot find module '@babel/preset-react' .在我导入 React 的 every.js 文件的第一行中,我收到此错误: Parsing error: Cannot find module '@babel/preset-react'

package.json package.json

{
    "name": "admin",
    "version": "2.0.0",
    "description": "",
    "author": "",
    "main": "index.js",
    "engines": {
        "node": ">=14.15 <15",
        "npm": "~6"
    },
    "scripts": {
        "build-config:local": "CONFIG_ENV=local npm run build-config",
        "build-config:dev": "CONFIG_ENV=dev npm run build-config",
        "build-config:staging": "CONFIG_ENV=staging npm run build-config",
        "build-config:prod": "CONFIG_ENV=prod npm run build-config",
        "build-config": "buildconfig --env $CONFIG_ENV",
        "build": "npm run build-config && webpack --config ./webpack.config.js --mode production",
        "start": "webpack-dev-server --config ./webpack.config.dev.js --mode development"
    },
    "dependencies": {
        "@babel/eslint-parser": "^7.15.7",
        "@fortawesome/fontawesome-svg-core": "^1.2.36",
        "@fortawesome/free-brands-svg-icons": "^5.15.4",
        "@fortawesome/free-solid-svg-icons": "^5.15.4",
        "@fortawesome/react-fontawesome": "^0.1.15",
        "axios": "^0.21.4",
        "axios-progress-bar": "^1.2.0",
        "classnames": "^2.3.1",
        "clean-webpack-plugin": "^4.0.0",
        "copy-text-to-clipboard": "^3.0.1",
        "copy-webpack-plugin": "^9.0.1",
        "css-loader": "^6.3.0",
        "date-fns": "1.30.1",
        "file-loader": "^6.2.0",
        "html-webpack-plugin": "^5.3.2",
        "humanize-string": "^2.1.0",
        "lodash": "^4.17.21",
        "loglevel": "^1.7.1",
        "rc-checkbox": "^2.1.7",
        "rc-collapse": "^3.1.2",
        "rc-switch": "^3.2.2",
        "react": "^16.3.0",
        "react-bootstrap-table-next": "^4.0.3",
        "react-bootstrap-table2-editor": "^1.4.0",
        "react-bootstrap-table2-filter": "^1.3.3",
        "react-bootstrap-table2-paginator": "^2.1.2",
        "react-dom": "^16.9.0",
        "react-helmet": "^6.1.0",
        "react-json-tree": "^0.15.0",
        "react-router-dom": "^5.3.0",
        "react-syntax-highlighter": "^15.4.4",
        "sass": "^1.42.1",
        "sass-loader": "^12.1.0",
        "serialize-error": "^8.1.0",
        "single-config": "^2.0.1",
        "style-loader": "^3.3.0",
        "svg-react-loader": "^0.4.6",
        "webpack": "^5.53.0",
        "webpack-cli": "^4.8.0"
    },
    "devDependencies": {
        "@babel/core": "^7.15.5",
        "@babel/preset-env": "^7.15.6",
        "@babel/preset-react": "^7.14.5",
        "babel-loader": "^8.2.2",
        "eslint": "^7.32.0",
        "eslint-config-prettier": "^7.1.0",
        "eslint-plugin-import": "^2.22.1",
        "eslint-plugin-jsx-a11y": "^6.2.3",
        "eslint-plugin-prettier": "^3.3.1",
        "eslint-plugin-react": "^7.19.0",
        "prettier": "^2.2.1",
        "stylelint": "^13.13.0",
        "stylelint-config-prettier": "^8.0.2",
        "stylelint-config-recommended": "^5.0.0",
        "stylelint-order": "^4.1.0",
        "stylelint-prettier": "1.2.0",
        "stylelint-scss": "3.19.0",
        "webpack-dev-server": "^4.2.1"
    }
}

.eslintrc.json .eslintrc.json

{
    "parser": "@babel/eslint-parser",
    "extends": ["eslint:recommended", "plugin:react/recommended", "prettier", "prettier/react"],
    "plugins": ["react", "import", "jsx-a11y", "prettier"],
    "env": {
        "es6": true,
        "browser": true,
        "node": true
    },
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true
        },
        "sourceType": "module",
        "ecmaVersion": 6,
        "requireConfigFile": false,
        "babelOptions": {
            "presets": ["@babel/react"]
        }
    },
    "settings": {
        "react": {
            "version": "detect"
        }
    },
    "rules": {
        "prettier/prettier": "error",
        "consistent-return": "warn",
        "no-console": "warn",
        "eqeqeq": "error",
        "no-alert": "error",
        "no-caller": "error",
        "no-constructor-return": "error",
        "no-else-return": "error",
        "no-eq-null": "error",
        "no-eval": "error",
        "no-extend-native": "error",
        "no-extra-bind": "error",
        "no-extra-label": "error",
        "no-floating-decimal": "error",
        "no-implicit-globals": "error",
        "no-implied-eval": "error",
        "no-iterator": "error",
        "no-lone-blocks": "error",
        "no-loop-func": "error",
        "no-multi-spaces": "error",
        "no-multi-str": "error",
        "no-new-func": "error",
        "no-new-wrappers": "error",
        "no-octal-escape": "error",
        "no-proto": "error",
        "no-return-assign": "error",
        "no-return-await": "error",
        "no-script-url": "error",
        "no-self-compare": "error",
        "no-sequences": "error",
        "no-throw-literal": "error",
        "no-unmodified-loop-condition": "error",
        "no-unused-expressions": "error",
        "no-useless-call": "error",
        "no-useless-concat": "error",
        "no-useless-return": "error",
        "require-await": "error",
        "arrow-body-style": ["error", "as-needed"],
        "arrow-spacing": ["error", { "before": true, "after": true }],
        "no-duplicate-imports": "error",
        "no-useless-constructor": "error",
        "no-useless-rename": "error",
        "no-var": "error",
        "no-useless-computed-key": "error",
        "prefer-arrow-callback": "error",
        "prefer-const": "error",
        "prefer-spread": "error",
        "prefer-template": "error",
        "rest-spread-spacing": "error",
        "symbol-description": "error",
        "comma-spacing": ["error", { "before": false, "after": true }],
        "key-spacing": "error",
        "keyword-spacing": "error",
        "max-len": ["error", { "code": 160 }],
        "linebreak-style": "error",
        "lines-between-class-members": "error",
        "new-cap": "error",
        "no-multi-assign": "error",
        "no-negated-condition": "warn",
        "no-nested-ternary": "error",
        "no-new-object": "error",
        "no-trailing-spaces": "error",
        "prefer-object-spread": "error",

        "react/prop-types": "off",
        "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".tsx"] }],

        "react/sort-comp": [
            "error",
            {
                "order": ["static-variables", "static-methods", "lifecycle", "everything-else", "/^is.+$/", "/^on.+$/", "/^render.+$/", "render"],
                "groups": {
                    "lifecycle": [
                        "displayName",
                        "propTypes",
                        "contextTypes",
                        "childContextTypes",
                        "mixins",
                        "statics",
                        "defaultProps",
                        "state",
                        "instance-variables",
                        "constructor",
                        "getDefaultProps",
                        "getInitialState",
                        "getChildContext",
                        "getDerivedStateFromProps",
                        "componentWillMount",
                        "UNSAFE_componentWillMount",
                        "componentDidMount",
                        "componentWillReceiveProps",
                        "UNSAFE_componentWillReceiveProps",
                        "shouldComponentUpdate",
                        "componentWillUpdate",
                        "UNSAFE_componentWillUpdate",
                        "getSnapshotBeforeUpdate",
                        "componentDidUpdate",
                        "componentDidCatch",
                        "componentWillUnmount"
                    ]
                }
            }
        ],

        "import/no-unresolved": "off",
        "import/order": [
            "error",
            {
                "pathGroups": [
                    {
                        "pattern": "*.scss",
                        "group": "object",
                        "patternOptions": { "matchBase": true },
                        "position": "after"
                    },
                    {
                        "pattern": "*.svg",
                        "group": "object",
                        "patternOptions": { "matchBase": true },
                        "position": "after"
                    }
                ]
            }
        ]
    }
}

.babelrc .babelrc

{
    "presets": ["@babel/preset-env", "@babel/preset-react"]
}

webpack.config.dev.js webpack.config.dev.js

const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HtmlWebPackPlugin = require('html-webpack-plugin');

module.exports = () => ({
    devServer: {
        port: 8084,
        historyApiFallback: true, // serves index.html for all routes to avoid 404
        hot: true
    },
    devtool: 'eval-source-map',
    stats: 'minimal',
    entry: './src/index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].[fullhash].bundle.js',
        publicPath: '/'
    },
    resolve: {
        extensions: ['.js', '.jsx', '.json']
    },
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                exclude: [path.resolve(__dirname, 'node_modules')],
                include: [path.resolve(__dirname, 'src')],
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env', '@babel/preset-react']
                    }
                }
            },
            {
                test: /\.(scss|css)$/,
                use: [
                    'style-loader',
                    'css-loader',
                    {
                        loader: 'sass-loader',
                        options: {
                            sassOptions: {
                                quietDeps: true
                            }
                        }
                    }
                ]
            },
            {
                test: /\.(jpe?g|png|gif|svg)$/,
                include: [path.resolve(__dirname, 'src')],
                loader: 'file-loader',
                options: {
                    name: '[name].[ext]',
                    outputPath: 'images/',
                    useRelativePath: false
                }
            }
        ]
    },
    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebPackPlugin({
            template: './src/index.html',
            favicon: './src/assets/favicon/favicon-32x32.png'
        })
    ]
});

If this appears in VSCode with the fullstack approach (front and back as subfolders within your workspace), adjust eslint extensions configrations for your workspace as following:如果这出现在 VSCode 中,使用全栈方法(前面和后面作为工作区中的子文件夹),请调整工作区的 eslint 扩展配置,如下所示:

  "eslint.workingDirectories": [
    "./back",
    "./front"
  ]

That solved this issue in my case.这在我的案例中解决了这个问题。

Try installing @babel/preset-react explicitly, since someone had told that is isn't installed by default:尝试显式安装 @babel/preset-react,因为有人告诉过默认情况下没有安装:

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

Also, in the eslint.json file, you have referred to @babel/react instead of @babel/preset-react under babelOptions.此外,在eslint.json文件中,您在babelOptions 下引用了@babel/react而不是@babel/preset-react

After trying to figure this one out for a few hours, replacing @babel/preset-react with babel-preset-react-app finally worked.在尝试解决这个问题几个小时之后,用babel-preset-react-app替换@babel/preset-react终于奏效了。

Here's my full package.json (where there might be some mix up between dependencies / dev-dependencies though)这是我的完整 package.json(尽管依赖项/开发依赖项之间可能存在一些混淆)

{
  "name": "----",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@babel/core": "^7.15.8",
    "@babel/preset-env": "^7.15.8",
    "@babel/runtime": "^7.15.4",
    "@reduxjs/toolkit": "1.6.2",
    "immer": "^9.0.6",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-redux": "7.2.5",
    "react-router-dom": "^5.2.1",
    "react-scripts": "^5.0.0-next.47",
    "redux": "4.1.1",
    "redux-thunk": "^2.3.0",
    "styled-components": "^5.3.1",
    "web-vitals": "^1.0.1"
  },
  "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": {
    "@types/prop-types": "^15.7.4",
    "@types/react": "^17.0.19",
    "@types/react-redux": "7.1.19",
    "babel-preset-react-app": "*",
    "json-loader": "^0.5.7",
    "lodash": "^4.17.21",
    "prettier": "^2.4.1"
  }
}

Maybe it'll help someone, I just had a simillar problem which I solved.也许它会帮助某人,我刚刚解决了一个类似的问题。

I happened to have VSCode opened in a fullstack project where front and back were sepparate folders.我碰巧在一个 fullstack 项目中打开了 VSCode,其中正面和背面是单独的文件夹。 When I opened VSCode only in the front folder this error faded away.当我在前面的文件夹中打开 VSCode 时,这个错误就消失了。

I guess a solution would be to make a shared node_modules folder or setup a workspace from front and back folders, I went with the 2nd option.我想一个解决方案是创建一个共享的 node_modules 文件夹或从前后文件夹设置一个工作区,我选择了第二个选项。

I have been having the same issue.我一直有同样的问题。 I fixed the issue by removing the我通过删除解决了这个问题

> @babel/eslint-parser // from eslintrc.js to 
> babel/eslint-parser

I notice in package.json I have babel/eslint not @bable/eslint我注意到 package.json 我有 babel/eslint 而不是 @bable/eslint

Add below code in your webpack.config.js file在您的webpack.config.js文件中添加以下代码

Encore
//...
.enableReactPreset()

Just open your main Project Folder on which your public, src, etc files.只需打开您的主项目文件夹,其中包含您的公共、src 等文件。

暂无
暂无

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

相关问题 解析错误:找不到用于 Sanity 的模块“@babel/preset-env” - Parsing Error: Cannot find module '@babel/preset-env' for Sanity 找不到模块'babel-preset-react' - Cannot find module 'babel-preset-react' 在 babel 中预设反应和反应之间的区别 - difference between preset-react and react in babel 错误:找不到模块 'babel-preset-react' - 如果要解析“react”,请使用“module:react” - Error: Cannot find module 'babel-preset-react' - If you want to resolve "react", use "module:react" 适用于Android的React Native-使用./gradlew assembleRelease将产生“找不到模块&#39;babel-preset-react-app&#39;”错误 - React Native for Android - Using ./gradlew assembleRelease will produce “Cannot find module 'babel-preset-react-app' “ error React-Native错误:找不到模块“ metro-react-native-babel-preset” - React-Native error: cannot find module 'metro-react-native-babel-preset' 捆绑失败:错误:找不到模块“ babel-preset-react-native-stage-0 / decorator-support” - bundling failed: Error: Cannot find module 'babel-preset-react-native-stage-0/decorator-support' 捆绑失败:错误:无法从&#39;/ workspace / reactnative找到模块&#39;babel-preset-react-native&#39; - bundling failed: Error: Cannot find module 'babel-preset-react-native' from '/workspace/reactnative'' 从反应库导入后出现“添加@babel/preset-react...”错误 - "Add @babel/preset-react ..." error after importing from a react library [错误]_找不到模块'babel-preset-es2015' - [Error]_Cannot find module 'babel-preset-es2015'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM