/

Parcel,如何修復“regeneratorRuntime未定義”錯誤

Parcel,如何修復“regeneratorRuntime未定義”錯誤

我在一個使用Babel的項目中遇到了這個問題,只要我添加了一個async函數,這個問題就會出現,但對於任何最近的JavaScript功能,問題都是一樣的:

Parcel使用的Babel生成了一個polyfill,但為了避免這個錯誤,你還需要加載regenerator-runtime運行時。

一種解決方案是在你的主JavaScript文件的頂部添加以下內容:

1
import 'regenerator-runtime/runtime'

Parcel在默認情況下會包含這個包,增加了25KB的大小。

在代碼庫方面,最有效的解決方法是在你的package.json中添加browserslist屬性。

例如:

1
2
3
"browserslist": [
"last 1 Chrome version"
]

對於測試來說足夠好了。支持多個瀏覽器:

1
2
3
4
5
6
7
"browserslist": [
"last 3 and_chr versions",
"last 3 chrome versions",
"last 3 opera versions",
"last 3 ios_saf versions",
"last 3 safari versions"
]

或者:

1
2
3
"browserslist": [
"since 2017-06"
]

你需要添加一個足夠新的版本來支持async/await,這樣Babel就不會嘗試添加一個polyfill。

在這裡檢查所有有效的值:https://github.com/browserslist/browserslist

tags: [“JavaScript”, “Parcel”, “Babel”, “regeneratorRuntime”]