无效的选项:corejs不是有效的顶级选项

时间:2019-04-15 08:45:42

标签: reactjs webpack babel

我用webpack和babel构建了react项目。

效果很好。

但是,今天我在下面遇到了一些错误。

ERROR in ./index.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: [BABEL] /home/rpf5573/react-discovery-v2/src/admin/admin-client/index.js: Invalid Option: corejs is not a valid top-level option.
        Maybe you meant to use 'targets'? (While processing: "/home/rpf5573/react-discovery-v2/src/admin/admin-client/node_modules/@babel/preset-env/lib/index.js")
    at validateTopLevelOptions (/home/rpf5573/react-discovery-v2/src/admin/admin-client/node_modules/@babel/preset-env/lib/normalize-options.js:49:13)
    at normalizeOptions (/home/rpf5573/react-discovery-v2/src/admin/admin-client/node_modules/@babel/preset-env/lib/normalize-options.js:160:3)
    at _default (/home/rpf5573/react-discovery-v2/src/admin/admin-client/node_modules/@babel/preset-env/lib/index.js:168:37)
  ....
error Command failed with exit code 2.

这是我的admin-client/.babelrc

module.exports = {
  compact: true,
  presets: [
    [
      "@babel/preset-env",
      {
        modules: false,
        targets: {
          browsers: ["since 2015"]
        },
        useBuiltIns: "usage",
        corejs: "2"
      }
    ],
    "@babel/preset-react"
  ],
  plugins: [
    "@babel/plugin-proposal-class-properties"
  ]
}

我怎么了?

我该怎么办?

3 个答案:

答案 0 :(得分:5)

也许您最近有一些主要版本更改?

就我而言,这就是原因。 解决方案为:

  • 从项目中完全删除node-modules文件夹

  • 从项目根文件夹中删除package-lock.json文件

  • 执行npm i重新创建所有内容

答案 1 :(得分:3)

I experienced the same challenge

作为@SysDragon建议完全删除node-modules的替代方法。我深入研究了为何投诉专门针对corejs。我找到了一个很好的补救方法here

总而言之,这些是已采取的步骤:

  • 安装最新版本的core-js(或至少版本3)。 无论您要构建什么,都可以利用最新的JavaScript功能。就我而言,我正在使用react-16.9.0mdbreact-4.19.0
  

注意:Core-js是JavaScript的模块化标准库。包括截至2019年的ECMAScript的polyfill:promise,符号,集合,迭代器,类型数组和许多其他功能。

  • 然后,您需要更新转译器babel,它是“亲戚”。 该代码段有助于实现这一目标:yarn upgrade @babel/core @babel/plugin-transform-runtime @babel/polyfill @babel/preset-env @babel/runtime babel-loader --dev
  

--dev部分只是将它们保存为devDependencies(如果使用yarn)(对于npm,请使用--save-dev),我主张这一点,尤其是在团队项目中。

答案 2 :(得分:0)

就我而言,我正在处理的子目录是存储库根目录中较大的Yarn工作区的一部分,然后将该子目录从工作区中删除并在子目录中重新安装node_modules即可解决问题。

此问题很可能是由于依赖性不匹配引起的。