Failed to type check の直し方と ignoreBuildErrors
実際に出るエラー
next build が TypeScript の型の誤りを見つけたときに出るビルドエラーです。
何が起きているか
next build は、JavaScript に変換したあとに TypeScript の型を確かめます。型の誤りが1つでもあると、そこでビルドを止めます。
実機の出力です。
✓ Compiled successfully in 2.5s
Running TypeScript ...
app/page.tsx(2,9): error TS2322: Type 'string' is not assignable to type 'number'.
Failed to type check.
直す場所は Failed to type check. の上に出ます。app/page.tsx(2,9) はファイルと行と列、TS2322 は TypeScript のエラーの番号です。
ignoreBuildErrors で通すと
next.config.ts にこう書くと、型の確認を飛ばします。
const nextConfig: NextConfig = {
typescript: { ignoreBuildErrors: true },
}
実機では、出力に Skipping validation of types と出て、型の誤りがあるままビルドが通りました。
| 設定 | 結果 |
|---|---|
| 何も書かない | Failed to type check. で止まる |
| ignoreBuildErrors: true | Skipping validation of types と出て通る |
型チェックが通っても安心できないもの
逆に、型チェックを有効にしていてもすり抜けるものがあります。実機で確かめたものです。
- ページの
paramsの型を、Promise でない形で書いても通る(params が undefined になる) next/imageのwidthを書き忘れても通る(width が無いエラー)
型が通ったことは、動きが正しいことの証拠にはなりません。本番と同じビルドで開いて確かめてください。
型の確認を別に走らせる
ビルドで初めて気づくと、直すまで出せなくなります。tsc --noEmit を手元や CI で先に走らせておくと、ビルドより前に気づけます。
npx tsc --noEmit出典
このページの内容は上記の一次情報を基準に書いています。個人ブログや二次情報を根拠にしていません。