Babel 7失败,单个插件显示“检测到重复插件/预设”,

dffbzjpn  于 2022-12-08  发布在  Babel
关注(0)|答案(5)|浏览(306)

失败的插件是@babel/plugin-transform-regenerator(没有边际插件,每周下载160万次)。
这是我的整个.babelrc

{
  "presets": [],
  "plugins": [
    "@babel/plugin-transform-regenerator"
  ]
}

当我尝试使用parcel build source/main/index.html --no-source-maps --out-dir build将其与包裹一起传输时,出现以下错误:

/path/to/index.js: Duplicate plugin/preset detected.
If you'd like to use two separate instances of a plugin,
they need separate names, e.g.

plugins: [
  ['some-plugin', {}],
  ['some-plugin', {}, 'some unique name'],
]

at assertNoDuplicates (/.../node_modules/@babel/core/lib/config/config-descriptors.js:205:13)
at createDescriptors (/.../node_modules/@babel/core/lib/config/config-descriptors.js:114:3)
at createPluginDescriptors (/.../node_modules/@babel/core/lib/config/config-descriptors.js:105:10)
at alias (/.../node_modules/@babel/core/lib/config/config-descriptors.js:63:49)
at cachedFunction (/.../node_modules/@babel/core/lib/config/caching.js:33:19)
at plugins.plugins (/.../node_modules/@babel/core/lib/config/config-descriptors.js:28:77)
at mergeChainOpts (/.../node_modules/@babel/core/lib/config/config-chain.js:314:26)
at /.../node_modules/@babel/core/lib/config/config-chain.js:278:7
at buildRootChain (/.../node_modules/@babel/core/lib/config/config-chain.js:68:29)
at loadPrivatePartialConfig (/.../node_modules/@babel/core/lib/config/partial.js:85:55)

以下是我的package.json版本:

"@babel/core": "^7.1.2",
"@babel/plugin-transform-regenerator": "^7.0.0",

有什么想法吗?

wgx48brx

wgx48brx1#

这是一个巴别塔错误,基本上说你已经定义了你的插件@babel/plugin-transform-regenerator两次-或多或少间接。
包捆绑器默认使用Babel预设@babel/preset-env来翻译你的代码。这些预设通常只是可共享的插件列表。正如你所看到的herepreset-env已经包含了Babel 7中的"@babel/plugin-transform-regenerator"
简单的解决方案:只需要从.babelrc中插件配置中删除"@babel/plugin-transform-regenerator"
PS:从版本6迁移到版本7后,有过类似的经历。我的旧配置看起来是这样的(在巴别塔6中有效)

"plugins": [
    "react-hot-loader/babel", 
    "transform-object-rest-spread", 
    "transform-class-properties", 
    "transform-runtime",
    "transform-async-generator-functions",
    "transform-async-to-generator"
  ],
  "presets": ["env", "react"]

我不得不删除插件transform-object-rest-spreadtransform-async-generator-functionstransform-async-to-generator,正如前面所说,它们包含在env中(这里明确指定)。
Babel提供了一个名为X1 M10 N1 X(惊喜,惊喜)的奇妙升级工具,它确实很好地完成了重命名插件的工作,但不幸的是,它让我独自拥有这些“副本”。
希望,这有帮助。

vhmi4jdf

vhmi4jdf2#

在做了一些研究后,最有可能的原因是你有一个或多个默认插件,也是由这个插件内部使用的错误。
解决此问题的最简单方法是按照错误的指示执行操作:为插件添加唯一名称:
"plugins": ["@babel/plugin-transform-regenerator", {}, 'unique-name']

hec6srdp

hec6srdp3#

我今天也遇到了同样的问题。我的解决方法是:

{
"presets": [
   "@babel/preset-env",
   "@babel/preset-react"
],
"plugins": [
    "transform-object-rest-spread",
    "transform-class-properties"
] 
}
twh00eeo

twh00eeo4#

只需将"@babel/plugin-transform-regenerator"

"plugins": [
    "@babel/plugin-transform-regenerator"
]
omhiaaxx

omhiaaxx5#

我遇到了同样的问题,但与另一个插件,我认为他们都是一样的。我的插件:

@babel/plugin-proposal-object-rest-spread

最后我注意到在devDependencies in package.jsonplugins in webpack.config.js中都有一个插件。我去掉了webpack文件中的那个,它运行得很好。
但是你的问题是.babelrcpackage.json。我想如果你和我一样做的话会解决的。你不必同时在两个文件中使用相同的插件。

相关问题