JavaScript | 使用 Await 及 Async 還需要一些什麼? feat.Webpack, Babel

神Q超人
Enjoy life enjoy coding
3 min readApr 30, 2019
未安裝 @babel/polyfill 進行編譯

好的,這件事是我用 react-testing-library 玩測試的時候發現的,之後也會發一篇文章來簡單描述對這個套件的感覺,總之故事是發生在官方的教學中有這例子:

來源:https://react-testing-examples.com/jest-rtl/

當我就像以前一樣,天真快樂的貼上程式碼想要與 Method 來場快樂的 Unit Test 時,畫面上的終端機卻很不得體的給我噴錯,當然錯誤就是出現在那個 asyncawait 身上,於是又開始了一段 Search 之旅。

啊其實這段旅程沒有很久就結束了,因為小弟我遇到的 87 % 問題其實都在 Stack Overflow 中可以獲得解答,推薦大家有事沒事就可以上去逛一下,收穫應該會比逛蝦皮還多。

好啦!原因就是 @babel/polyfill

只要裝上 @babel/polyfill ,就可以讓使用了 asyncawait 的程式能夠正常運作,需要注意的是它與其他 loader 不同,需要裝在 dependencies 中,而不是 dev 環境:

npm install @babel/polyfill

使用方法也很簡單,只需要在撰寫程式前在第一行先 import ,就能夠正常編譯,且不會出錯:

import '@babel/polyfill';// 或是這麼做:
// require("@babel/polyfill");

另外,如果在專案中有使用 Webpack 做打包的話,也可以直接將 @babel/polyfill 放置在 webpack.config.jsentry 中,讓打包時自動載入:

那雖然只是 Coding Blog 的文章,但如果上方有任何問題,也歡迎大家留言討論!謝謝 🙌

參考資料

  1. https://stackoverflow.com/questions/33527653/babel-6-regeneratorruntime-is-not-defined
  2. https://babeljs.io/docs/en/babel-polyfill

--

--