Плагин, который терпит неудачу, - @babel/plugin-transform-regenerator (без крайнего плагина, 1,6 миллиона загрузок в неделю).
Это весь мой .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",
Любые идеи?
@icecub Это, вероятно, сработает, но очень странно, что что-то подобное вообще происходит ... Откуда взялся дублированный плагин?
Из того, что я смог найти, проведя небольшое исследование, возможно, у вас есть пара плагинов по умолчанию, которые также используются этим плагином внутри. Это вызывает указанную ошибку.
@icecub Пожалуйста, сделайте это ответом, чтобы я мог принять его, чтобы у всех в сети была ссылка.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


После проведения некоторого исследования наиболее вероятная причина упомянутой ошибки заключается в том, что у вас есть один или несколько подключаемых модулей по умолчанию, которые также используются этим подключаемым модулем для внутренних целей.
Самый простой способ решить проблему - сделать то, что вам говорит ошибка: добавить уникальное имя к плагину:
"plugins": ["@babel/plugin-transform-regenerator", {}, 'unique-name']
Это ошибка babel, которая в основном говорит о том, что вы определили свой плагин @babel/plugin-transform-regenerator дважды - более или менее косвенно.
Parcel Bundler переводит ваш код по умолчанию с помощью предустановки Babel @babel/preset-env. Эти пресеты, как правило, представляют собой просто список плагинов, которым можно делиться. Как видите, здесь, preset-env уже включает "@babel/plugin-transform-regenerator" в Babel 7.
Простое решение: просто удалите "@babel/plugin-transform-regenerator" из конфигурации плагинов в .babelrc.
PS: был похожий опыт после перехода с версии 6 на 7. Моя старая конфигурация выглядела так (действительна в Babel 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-spread, transform-async-generator-functions и transform-async-to-generator, которые, как сказано, включены в env (здесь явно указано).
Babel предлагает фантастический инструмент обновления под названием babel-upgrade (сюрприз, сюрприз), который хорошо справился с задачей переименовать плагины, но, к сожалению, оставил меня наедине с этими «дубликатами».
Надеюсь, это поможет.
Сегодня я столкнулся с теми же проблемами. Мой способ решить эту проблему:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"transform-object-rest-spread",
"transform-class-properties"
]
}
Я никогда с этим не работал, но, судя по приведенному примеру, вы можете попробовать исправить это с помощью
"plugins": ["@babel/plugin-transform-regenerator", {}]. Хотя я очень сомневаюсь, что это будет иметь значение. Обходной путь может заключаться в использовании"plugins": ["@babel/plugin-transform-regenerator", {}, 'some-random-name'], чтобы, по крайней мере, вы дали ему уникальное имя.