Rumah >hujung hadapan web >tutorial js >Mengapa saya mendapat ralat \'regeneratorRuntime is not definition\' dalam Babel 6, dan bagaimanakah saya boleh membetulkannya?

Mengapa saya mendapat ralat \'regeneratorRuntime is not definition\' dalam Babel 6, dan bagaimanakah saya boleh membetulkannya?

DDD
DDDasal
2024-12-08 21:47:14581semak imbas

Why am I getting a

ralat "regeneratorRuntime tidak ditakrifkan" dalam Babel 6

Apabila menggunakan Babel 6, anda mungkin menghadapi "regeneratorRuntime tidak ditakrifkan" ditakrifkan" ralat, terutamanya apabila menggunakan sintaks async/menunggu. Ralat ini menunjukkan bahawa anda kehilangan kebergantungan atau konfigurasi yang diperlukan semasa menyediakan Babel.

Untuk menyelesaikan isu ini, anda perlu memasang dan mengkonfigurasi babel-polyfill. Pustaka menyediakan satu set poliisi yang boleh digunakan untuk menyokong ciri JavaScript moden, seperti async/menunggu, dalam persekitaran yang tidak menyokong fungsi asli yang disokong.

Pasang kebergantungan

Mula-mula, pasang babel-polyfill dan kebergantungan Babel lain yang diperlukan menggunakan npm:

npm i -D babel-core babel-polyfill babel-preset-es2015 babel-preset-stage-0 babel-loader

Kemas kini pakej.json

Kemas kini pakej.json anda fail, tambah babel-polyfill pada devDependencies:

"devDependencies": {
  "babel-core": "^6.0.20",
  "babel-polyfill": "^6.0.16",
  "babel-preset-es2015": "^6.0.15",
  "babel-preset-stage-0": "^6.0.15"
}

Kemas kini .babelrc

Anda tidak perlu membuat sebarang perubahan pada fail .babelrc. Ia sepatutnya kelihatan seperti ini:

{
  "presets": [ "es2015", "stage-0" ]
}

Kemas kini fail JavaScript anda

Pastikan anda menggunakan sintaks tak segerak/menunggu. Contohnya:

"use strict";

export default async function foo() {
  var s = await bar();
  console.log(s);
}

function bar() {
  return "bar";
}

Dalam fail permulaan anda

Dalam fail permulaan anda, pastikan anda mendaftar Babel dan babel-polyfill:

require("babel-core/register");
require("babel-polyfill");

Untuk pengguna yang menggunakan webpack, sila ikuti cadangan @Cemen dan tambah babel-polyfill Tetapkan kepada nilai pertama tatasusunan kemasukan dalam fail konfigurasi webpack anda:

module.exports = {
  entry: ['babel-polyfill', './test.js'],

  output: {
    filename: 'bundle.js'       
  },

  module: {
    loaders: [
      { test: /\.jsx?$/, loader: 'babel', }
    ]
  }
};

Untuk ujian Mocha, gunakan yang berikut:

mocha --compilers js:babel-core/register --require babel-polyfill

Mengikut langkah ini, anda harus Keupayaan untuk menyelesaikan " regeneratorRuntime tidak ditakrifkan" ralat dan gunakan sintaks async/menunggu.

Atas ialah kandungan terperinci Mengapa saya mendapat ralat \'regeneratorRuntime is not definition\' dalam Babel 6, dan bagaimanakah saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn