Nuxt & Jest にて ReferenceError: regeneratorRuntime is not defined が出るケースに対処
↑の続き。
タイトルの通り、
● Test suite failed to run ReferenceError: regeneratorRuntime is not defined
というエラーでテスト自体が正常に処理されないケースがある。
どうやら babel
周りの設定が原因らしいのだけど、いまいちわからない。
いろいろ調べた結果をメモしておこうと思う。
Store の actions のところで「ReferenceError: regeneratorRuntime is not defined」
$ yarn test HogeComponent yarn run v1.16.0 $ jest HogeComponent FAIL spec/components/parts/HogeComponent.spec.js ● Test suite failed to run ReferenceError: regeneratorRuntime is not defined > 139 | const actions = { | ^ 140 | at src/store/index.js:139:17 at Object.<anonymous> (src/store/index.js:139:17) at Object.<anonymous> (spec/components/parts/HogeComponent.spec.js:4:1)
といったように、 Store の actions のところで謎のエラーが発生。
いろいろ調べてみると package.json
の babel
の定義を
"babel": { "env": { "test": { "presets": [ "@babel/preset-env" ] } } }
から、
・・・ "babel": { "env": { "test": { "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] } } } ・・・
というように直してみたら正常に処理できた。
Component の Script 内部にて「ReferenceError: regeneratorRuntime is not defined」
$ yarn test HogeComponent yarn run v1.16.0 $ jest HogeComponent FAIL spec/components/parts/HogeComponent.spec.js ● Test suite failed to run ReferenceError: regeneratorRuntime is not defined 353 | }, > 354 | methods: { | ^
まったく意味不明だったけど、Component の Script 内部の定義にて、
export default { data() { ・・・割愛・・・ computed: { ・・・割愛・・・ mounted() { ・・・割愛・・・
という順番で定義していたのを、
export default { data() { ・・・割愛・・・ mounted() { ・・・割愛・・・ computed: { ・・・割愛・・・
の様に順番を入れ替えたら正常にテストが処理されるようになった。
babel
、あるいは webpack
的なサムシングなのだろうけど、あまり明るくないのでツライ。