Я преобразовываю большой проект в веб-пакет и сталкиваюсь с ошибкой сборки (и на самом деле разные ошибки в зависимости от того, как я пытаюсь ее решить). Я еще не очень разбираюсь в вебпаке и хотел бы помочь с типичным решением таких проблем.
Кажется, существует конфликт между некоторыми зависимостями:
"@babel/core": "^7.0.0-beta.42",
"@babel/preset-env": "^7.0.0-beta.42",
"backbone.radio": "2.0.0",
Webpack жалуется: Cannot find module 'babel-preset-es2015'
. Похоже, что в backbone.radio есть файл .babelrc с "presets": ["es2015"]
, который, похоже, пытается выполнить babel, хотя он и является зависимостью, но в нем перечислено babel-preset-env как devDependency, поэтому он не найден.
Хорошо, поэтому я пытаюсь установить babel-preset-es2015@6.3.13 (на ту же ссылку backbone.radio) явно как зависимость верхнего уровня, чтобы ее можно было найти. Затем он находит это, но веб-пакет (или действительно бабел) жалуется: Error: Plugin/Preset files are not allowed to export objects, only functions.
Отлично, поэтому я пытаюсь установить более новую версию пресета, совместимого с babel 7, и , надеюсь, совместим с backbone.radio. Кажется, имя изменилось, поэтому я устанавливаю @ babel / preset-es2015 @ 7.0.0-beta.42. Конечно, имя не совпадает, поэтому я добавляю псевдоним веб-пакета, но это не работает, и его все еще нельзя найти; Я полагаю, что babel не загружает предустановленную зависимость с помощью babel, а делает это самостоятельно.
Так что теперь я застрял. Что люди обычно делают, чтобы решить такие проблемы? Возможны и другие потенциальные идеи, которые я не определил:
- передать babel (как-нибудь?) Псевдониму babel-preset-es2015 - @ babel / preset-es2015?
- настроить пряжу (как-нибудь?), Чтобы пропустить / удалить файл .babelrc backbone.radio (проблема полностью исчезнет, если этот файл исчезнет, но я не могу просто вручную удалить его из node_modules все время, конечно)