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!