babel/polyfill在create-react-app中已被弃用警告

5

我有一个使用npx create-react-app my-app创建的React应用程序。我一直在定期更新React和其他npm软件包。

一段时间以前,我开始收到以下警告:

@babel/polyfill已弃用,请单独使用core-js的所需部分和regenerator-runtime/runtime

以下是我的package.json文件中的内容:

"devDependencies": {
    "babel-polyfill": "^6.26.0",
    "redux-devtools": "^3.5.0"
  }

我在网上找到了一些关于如何处理这个问题的文章,但它们都不像是官方解决方案。什么是正确的处理方法?

到目前为止,这只是一个警告而不是一个错误,所以我暂时搁置了它。今天,我升级了moment包,并且开始出现错误,所以我想先解决这个问题。

我很感激能给我一些指点,让这个警告消失。

1个回答

7

babel-polyfill正在被core-js替换。您可以删除babel-polyfill,然后安装core-js。在安装了core-js之后,请使用以下内容更新.babelrc或babel.config.js文件中的babel预设:

"presets":[
  ['@babel/preset-env',
  {
    useBuiltIns: 'usage',
    corejs: 3,
  }],
]

如果您在应用程序中导入了babel-polyfill,也可以将其删除。同时,您可以在预设中添加一个targets属性。
[
  '@babel/preset-env',
  {
    targets: {
      browsers: ['> 0.25%, not dead'],
    },
    useBuiltIns: 'usage',
    corejs: 3,
  },
]

也许我没有完全按照您的指示操作。在package.json文件的devDependencies部分中,我用"core-js": "3.6.5"替换了"babel-polyfill": "^6.26.0",但是当我运行npm start编译我的React应用程序时,我仍然得到与之前相同的错误。我在我的应用程序目录中没有看到.babelrcbabel.config.js文件,但是我在package-lock.json文件中看到了大量关于babel的引用。在安装core-js之前,我删除了npm_modules文件夹以及package-lock.json文件。我做错了什么? - Sam
基本上,我更新了我的 package.json 文件,使用 core-js 替代了 babel-pollyfill,删除了 npm_modules 文件夹和 package-lock.json 文件。然后运行 npm i 来安装所有的包。无论如何,正如我之前提到的,当我启动编译过程时,仍然会出现相同的错误。 - Sam
是的,我使用Create React App创建了我的React应用程序。那对此有什么影响吗? - Sam
1
很不幸,使用CRA在不弹出的情况下自定义Babel配置并不容易。我找到了一种方法。如果这能指引你正确的方向,请告诉我。https://devinschulz.com/modify-create-react-apps-babel-configuration-without-ejecting/ @sam - technoY2K
一旦您能够掌握自定义Babel配置文件的方法,请使用上述答案更新它。 - technoY2K
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接