Uncaught ReferenceError: регенераторВремя выполнения не определено в React
Я получаю сообщение об ошибке "Uncaught ReferenceError: refreshratorRuntime is not defined". Пожалуйста, помогите мне найти ошибку и как ее решить. введите описание изображения здесь
7 ответов
- Установите зависимость времени выполнения
npm i --save-dev @babel/plugin-transform-runtime
- Добавьте плагин в ваш.babelrc файл
{
"plugins": ["@babel/plugin-transform-runtime"]
}
Дополнительная информация:https://babeljs.io/docs/en/babel-plugin-transform-runtime
TL; DR;
- Асинхронные функции - это абстракция поверх генераторов.
- Асинхронные функции и генераторы теперь поддерживаются во всех основных браузерах, а также в Node10 и выше.
- Если вы используете транспилятор (например, babel) для обратной совместимости, вам понадобится дополнительный "слой", который преобразует генераторы. Это подразумевает преобразование ES6 в ES5 во время выполнения, поскольку их синтаксис не имеет обратной совместимости. См. https://cmichel.io/how-are-generators-transpiled-to-es5
Спасибо Это работает, когда я добавляю оператор импорта - import regeneratorRuntime from "regenerator-runtime";
в компоненте я использую async/await.
просто добавь
"browserslist": [
"last 2 Chrome versions"
]
в конце ваших проектов
package.json
файл, также обратите внимание, что его браузеры во множественном числе не являются браузерами!
Ваш файл в конце может выглядеть примерно так ->
},
"dependencies": {
"prop-types": "^15.8.0",
"react": "^17.0.1",
"react-dom": "^17.0.1"
},
"browserslist": [
"last 2 Chrome versions"
]
}
игнорируйте раздел зависимостей в приведенном выше представлении кода, это просто для справки о том, как может выглядеть ваш package.json.
2022
Если вы работаете с Babel 7 или более поздней версией, вам не нужно устанавливать дополнительный плагин (ни
@babel/plugin-transform-runtime
или же
@babel/plugin-transform-regenerator
или другие плагины).
Позже вам придется включать этот оператор каждый раз, когда вы используете
async/await
синтаксис.
import regeneratorRuntime from "regenerator-runtime";
Возможно, если вы установили линтер в своем проекте, он предупредит вас о том, что оператор объявлен, но его значение никогда не читается, но я думаю, что это просто ошибка, потому что если вы удалите его, код не будет работать.
Я столкнулся с этой проблемой (используя Babel v7), и даже после того, как я последовал совету и установил соответствующие пакеты, я все еще не смог получить идентификатор этой ошибки. были проверены следующие сообщения о переполнении стека...
- Регенератор Babel 6 Время работы не определено
- Babel 7 - ReferenceError: регенератор Время выполнения не определено
Помогли следующие действия:
- Перейдите в package.json и добавьте в jest следующее (скриншот также добавлен):
"moduleNameMapper": {
". +\.(css|styl| less | sass | scss |png|jpg| ttf | woff | woff2) $": "identity-obj-proxy"}
- при запуске теста используйте следующий суффикс в команде...
--setupFilesAfterEnv "./src/setupTests.js"
Итак, чтобы запустить тест, это будет:
$ jest /pathToTest/TestFile.test.js --setupFilesAfterEnv "./src/setupTests.js"
Надеюсь, это поможет кому-то, как помогло мне...
Если вам действительно необходимо использовать функцию async, приведенные выше решения должны работать. Другой способ решить эту проблему - использовать регулярные обещания, по крайней мере, так было в моем случае.
В моем случае, когда я импортирую «core-js/stable»; импортировать «регенератор-время выполнения/время выполнения»;сверху и установите зависимости, все работает хорошо.