找不到插件 "proposal-numeric-separator"

Could not find plugin "proposal-numeric-separator"

如何修复 Could not find plugin "proposal-numeric-separator",我在尝试构建我的 React 应用程序时遇到此错误,我还没有弹出该应用程序:

./src/index.js
Error: [BABEL] /home/pc/Downloads/project/src/index.js: Could not find plugin "proposal-numeric-separator". Ensure there is an entry in ./available-plugins.js for it. (While processing: "/home/pc/Downloads/project/node_modules/babel-preset-react-app/index.js[=11=]")
    at Array.map (<anonymous>)
    at Generator.next (<anonymous>)
    at Generator.next (<anonymous>)


error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

我已经尝试下载 Babel 和依赖 Proposal Numeric Separator,移除 Node Modules,清理 Yarn 缓存;但没有任何效果。

我使用的是 Yarn 1.22.4 和 Node 13.11.0,但我也尝试过使用 NPM 6.13.7。

我刚刚遇到了这件事。要修复它,我 运行 yarn build 具有 sudo 权限。

以下步骤有效:

  1. 将以下行添加到 package.json:
"resolutions": { 
  "@babel/preset-env": "7.5.5" 
},
  1. 运行以下命令:
$ npx npm-force-resolutions
  1. 安装依赖项:
$ npm install
# or 
$ yarn
  1. 构建您的项目:
$ yarn build

看看这个Github Issue

为什么会出现这个问题?:

这是babel使用的内部包之间的冲突问题。

@babel/compat-data 添加新插件会破坏旧的 @babel/preset-env 版本。这是因为 preset-env 遍历 compat-data 的插件,如果插件没有在 preset-env 的 available-plugins.js 文件中定义则抛出。

这是解决问题的合并:https://github.com/babel/babel/pull/11201/files/a88a00750c61ff89f1622d408d67108719f21ecd

解决方法:

  • 删除package-lock.jsonyarn.lock
  • 删除 node_modules 文件夹
  • package.jon中我将这些包的版本号调整为:
    ...
    "devDependencies": {
        "@babel/compat-data": "^7.8.0",
        "@babel/preset-env": "^7.8.0",
        "babel-loader": "^8.1.0",
        ...
    },
    ...
    "resolutions": {
        "@babel/preset-env": "^7.8.0"
    }
  • 运行 npm install
  • 运行 npm run build

我遇到了类似的问题,我能够通过将所有 babel 依赖项更新到最新版本来修复它。我不知道 babel 的确切问题。但是,下面提到的步骤对我有用。

第 1 步:从 package.json

中识别并删除所有与 babel 相关的依赖项
npm remove @babel/runtime @babel/core @babel/plugin-proposal-class-properties @babel/plugin-transform-modules-commonjs @babel/plugin-transform-runtime @babel/preset-env @babel/preset-react babel-eslint babel-jest babel-loader

第 2 步:重新安装 babel 依赖项

npm install --save @babel/runtime

npm install --save-dev @babel/core @babel/plugin-proposal-class-properties @babel/plugin-transform-modules-commonjs @babel/plugin-transform-runtime @babel/preset-env @babel/preset-react babel-eslint babel-jest babel-loader

PS:上面的 babel 依赖项列表会因您的项目而异。

来自create-react-app中对应的issue,

Update react-scripts to 3.4.1 in your package.json file and remove node_modules as well as package-lock.json/yarn.lock and re-install.

我刚刚将 react-script 版本从 3.0.1 更改为 3.4.1

我正在使用 angular & 这对我有用,只需将 @babel/compat-data 的版本从 ^7.8.0 更改为 7.8.0,包-lock.json 有较新的版本,但有错误。

里面 package.json:

  "devDependencies": {
    "@babel/compat-data": "7.8.0",
}

参考:https://github.com/angular/angular-cli/issues/17262

我找到了两个解决方案

a ) 安装 babel compat

"devDependencies": {
    "@babel/compat-data": "7.8.0",
} 

b) 安装 plugin-proposal-numeric-separator

npm install --save-dev @babel/plugin-proposal-numeric-separator

仅安装此版本 7.8.0

  1. Angular CLI 会造成此类问题。转到包 json 并将其更改为

    build-angular": "0.803.17"

请不要添加 ^ 或 ~

这只是一个 4 步过程。

原因: 发生这种情况是因为 babel 中缺少一个包。即使您使用 ng new 命令创建 angular 应用程序,也会发生这种情况。

解决方案

  1. 在终端中使用以下代码安装plugin-proposal-numeric-separator

    npm install --save @babel/plugin-proposal-numeric-separator
    
  2. 完成后导航到文件,如下所示。

    node_modules > @babel > preset-env > available-plugins.js

  3. 在available-plugins.js下方exports.default = void 0;复制粘贴以下代码。

    var _pluginProposalNumericSeparator = _interopRequireDefault(require("@babel/plugin-proposal-numeric-separator"));
    
  4. 在available-plugins.js内var _default对象声明复制粘贴以下代码。

    "proposal-numeric-separator": _pluginProposalNumericSeparator.default,
    

完成了。

试试这个,它有效:npm i @babel/compat-data@7.8.0

我刚刚在 10 分钟前使用过它,它运行良好。

Related issue going on github about this. Click Here!

在我的 angular 8 应用程序中,虽然我没有对 react-scripts 包的任何直接依赖性并且在 package.json 中也没有,但在构建时开始出现此错误。它可能被其他包用作 depedancy。

通过在 github 上阅读此 post,我将其作为依赖项添加到 package.json "react-scripts": "3.4.1" 和 运行 npm install 构建开始正常工作.

在package.json

  "dependencies": {
    "@babel/compat-data": "7.8.0",
    "@babel/plugin-proposal-numeric-separator": "^7.8.3",
    "babel-loader": "^8.1.0",
  ....
  "resolutions": {
     "@babel/preset-env": "^7.8.7"
  }

它对我有用。您可以阅读更多

https://github.com/angular/angular-cli/issues/17262#issuecomment-603396857

你可以使用这个命令,它对我有用。

npm i @babel/compat-data@7.8.0

Add SKIP_PREFLIGHT_CHECK=true to .env file 使构建工作而不弹出并按照以下步骤操作:

  • 删除node_modulespackage-lock.json
  • "resolutions": { "@babel/preset-env": "^7.8.7" }添加到package.json
  • 运行 npm install npm-force-resolutions --save-dev
  • 运行 npm install
  • 运行 npx npm-force-resolutions
  • 运行 npm install 再一次
  • 运行 npm run build

这对我有用:

  • 删除package-lock.json
  • 删除node_modules
  • 运行 npm i

就我而言,我有一个损坏的 node_modules 文件夹。 我的纱线安装只是由于电源浪涌而在中间停止了。

来自 运行:

rm -rf node_modules
yarn

我的问题解决了。

对我有用。 npm 安装@babel/compat-data@~7.8.0

试试这个,这个和我一起工作。

npm i @babel/compat-data@7.8.0