Nuxt & Jest にて ReferenceError: regeneratorRuntime is not defined が出るケースに対処

omiend.hatenablog.jp

↑の続き。

タイトルの通り、

  ● 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.jsonbabel の定義を

  "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 的なサムシングなのだろうけど、あまり明るくないのでツライ。