Как исправить асинхронный метод регенератораRuntime с помощью babel 7.5 + runtime + plugin-transform-runtime - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь использовать async / await в сценарии js (метод класса) в конфигурации веб-пакета, но у меня появляется эта ошибка:

search.js:33 Uncaught ReferenceError: regeneratorRuntime is not defined

Возможно, у меня ошибка в файле babelrc, но я попробовал все, что можно найти в Интернете: /

Стек: WSL1-узел 10.16.3 npm 6.11.1 в коде Visual Studio.

РанееУ меня был конфиг polyfill с похожей проблемой. Я пытался использовать новые рекомендации Babel с @ babel / plugin-transform-runtime и @ babel / runtime , но проблема сохраняется.

Я пытался удалить / node_modules/ каталог и блокировка файлов пакета для генерации его снова с npm i, но ничего не меняется.

У меня нет проблем с объявлением асинхронной функции (вне класса).

Файл с сгенерированной ошибкой

class Search {

    constructor() {...}

    async run() {
        await this.xxxx();
    }

    xxxx() {...}
}

.babelrc

{
  "presets": [
    ["@babel/preset-env"],
    [
      "@babel/env",
      {
        "modules": false,
        "useBuiltIns": "usage",
        "corejs": 3
      }
    ]
  ],
  "plugins": [
    [ "@babel/plugin-transform-runtime", {"regenerator": true, "corejs": 3} ],
    [ "@babel/plugin-transform-async-to-generator" ]
  ]
}

package.json

{
  ...

  "devDependencies": {
    "@babel/core": "^7.5.5",
    "@babel/plugin-syntax-dynamic-import": "^7.2.0",
    "@babel/plugin-transform-async-to-generator": "^7.5.0",
    "@babel/plugin-transform-runtime": "^7.6.2",
    "@babel/preset-env": "^7.6.3",
    "autoprefixer": "^9.6.1",
    "babel-loader": "^8.0.6",
    "clean-webpack-plugin": "^2.0.2",
    "css-loader": "^2.1.1",
    "file-loader": "^3.0.1",
    "fontmin-webpack": "^2.0.4",
    "imagemin-gifsicle": "^6.0.1",
    "imagemin-jpegtran": "^6.0.0",
    "imagemin-optipng": "^7.0.0",
    "imagemin-svgo": "^7.0.0",
    "imagemin-webpack": "^5.1.0",
    "jquery": "^3.4.1",
    "loader": "^2.1.1",
    "mini-css-extract-plugin": "^0.5.0",
    "node-sass": "^4.12.0",
    "optimize-css-assets-webpack-plugin": "^5.0.3",
    "postcss-cli": "^6.1.2",
    "postcss-import": "^12.0.1",
    "postcss-loader": "^3.0.0",
    "postcss-preset-env": "^6.7.0",
    "sass-loader": "^7.3.1",
    "style": "0.0.3",
    "style-loader": "^0.23.1",
    "sugarss": "^2.0.0",
    "uglifyjs-webpack-plugin": "^2.2.0",
    "webpack": "^4.39.2",
    "webpack-cli": "^3.3.7",
    "webpack-manifest-plugin": "^2.0.4"
  },
  "dependencies": {
    "@babel/runtime": "^7.6.3",
    "core-js": "^3.3.2",
    "detect-it": "^3.0.5",
    "gifsicle": "^4.0.1",
    "slick-carousel": "^1.8.1"
  },
  "browserslist": [
    "last 2 versions"
  ]
}

1 Ответ

0 голосов
/ 16 октября 2019

Я нашел решение.

В главном js-файле import "regenerator-runtime/runtime";

Добавить регенератор-среда выполнения npm i regenerator-runtime

Спасибо.

...