#async-await #electron #babeljs #next.js
#async-ожидание #electron #babeljs #next.js
Вопрос:
Используя конфигурацию по умолчанию, далее следует указание Babel использовать генераторы для моих асинхронных функций на стороне клиента. Это делает отладку более сложной, чем, казалось бы, должно быть. Как мне отключить это поведение?
Я использую приложение Electron, поэтому я действительно хочу, чтобы минимальное количество преобразований соответствовало среде выполнения Chromium.
Вот мое текущее "babel"
ключевое содержимое в моем package.json
:
"babel": {
"presets": [
[
"next/babel",
{
"preset-env": {
"targets": {
"chromium": 73,
"node": 11
}
},
"transform-runtime": {
"regenerator": false
}
}
]
]
}
Результатом здесь является то, что regenerator не включен, но он выходит из строя в сгенерированном Webpack коде. Если я удалю отключение regenerator
, я все равно увижу, что ресурсы все еще передают async
функции в генераторы.
Комментарии:
1. Попробуйте добавить
node: 10
вtargets
2. @evgenifotia Это не сработало 🙁
Ответ №1:
Я не думаю, что это chromium
является допустимой целью для документации по списку браузеров. Попробуйте "chrome": "73"
в качестве целевого объекта. Обратите внимание, что значение для данного целевого объекта должно быть строкового типа, а не числа.
Если есть плагин, который вы не хотите включать, то exclude
ключ должен позволить вам занести плагин в черный список, который в противном случае использовался бы на основе предоставленных вами целевых сред. "exclude": ["@babel/plugin-transform-regenerator"]
.
Примечание задающего вопрос
Это решило мою проблему. Я добился желаемого результата с помощью:
{
"presets": [
[
"next/babel",
{
"preset-env": {
"targets": {
"chrome": "73",
"node": "11"
}
}
}
]
]
}
Комментарии:
1. Одна из этих идей сработала! Когда я найду минимальную конфигурацию, я добавлю ее в ваш ответ и приму.
2. Отладчик позволяет мне пошагово выполнять
await
s, как и ожидалось!3. Смущающе,
"chrome": "73"
это было все, что потребовалось. Но в свою защиту скажу, что это своего рода алхимия, пока вы не придумаете правильное заклинание. В противном случае он просто молча не выполняет то, что, по вашему мнению, он должен делать.4. Могу ли я сказать «Я люблю тебя» в Stack Overflow? Годами искал решение этой проблемы!
5. Как сохранить все функции, представленные es6 , нетронутыми?