Next.jsの初心者です。
今回フロントエンドのテスト実装にjestを導入することに決めました。
試行錯誤していましたが上手くいかないため、こちらで質問させていただきます。
解決したいこと
Next.js(v4.2.3)環境下で、.babelrc
ファイルのpresetにnext/babel
を指定してjestを動作させたいです。
jestのバージョンにこだわりはありません。
バージョン
- Next.js :
v4.2.3
- Next.js(v4.2.3)のbabel-coreは
6.2.6
でした。 - jest:
22.4.4
- babel-jest:
22.4.4
前提
.babelrc
javascript:
1 "presets": [ 2 "next/babel" 3 ],
試したこと
試したこと1(preset変更)
公式サイトを見ながらv22のjestをインストールしました。
npm i -D jest@v22 babel-jest@v22 babel-core
package.jsonに下記を追加
json
1 "scripts": { 2 "test": "jest", 3 }, 4 "jest": { 5 "testURL" : "http://localhost" 6 }
実行
npm run test
エラーが発生。
Plugin/Preset files are not allowed to export objects, only functions.
調べるとパッケージが足りないなどが出てきますが、next/babel
です。
node_modules/next/package.json
を見る限り、問題ありませんでした。
↓
.babelrcのpresetsを変更すると解決しました。
"presets": [ "preset-env" ],
ちなみにbabel7をインストールし、"@babel/preset-env"
を指定してもjestv22は動作しました。
試したこと2
Next.jsのバージョンを上げる。
- next4... display:○ jest(v23):×
- next6.1... display:△ jest(v23):×
- next7... display:× jest(v23):○
- next8.1... display:× jest(v23):○
- next9... display:× jest(v23):○
バージョンを上げることでjestが動作するようになるみたいですが、影響範囲が大きいので既存プロジェクトでは気軽にできず…(汗)
他、試したこと
- Nextのバージョンは4のままで、jestのバージョンを上げていく。
"babel-core": "^7.0.0-bridge.0"
をインストール- jestv24のときにjest.config.jsを作成する
- babel7の時にbabel.config.jsを作成してpresetを書く
結局プロジェクト依存なので、Next.js(v4.2.3)のnext/babel
でjestを動作させる以外の道はなさそうなのですが、テスト導入はこんなに難しいものなのでしょうか…。
もし解決方法をご存知の方がいらっしゃいましたら、ご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。