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
Lepaskan: 2024-12-08 21:47:14
asal
599 orang telah melayarinya

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
Salin selepas log masuk

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"
}
Salin selepas log masuk

Kemas kini .babelrc

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

{
  "presets": [ "es2015", "stage-0" ]
}
Salin selepas log masuk

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";
}
Salin selepas log masuk

Dalam fail permulaan anda

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

require("babel-core/register");
require("babel-polyfill");
Salin selepas log masuk

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', }
    ]
  }
};
Salin selepas log masuk

Untuk ujian Mocha, gunakan yang berikut:

mocha --compilers js:babel-core/register --require babel-polyfill
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan