こんにちは。 エキサイト株式会社の三浦です。
今回は、表題のとおりですが、とりあえずIntelliJで不具合があったときはキャッシュを消して再起動してみると直るかもしれない、という話になります。
順を追って話していきます。
何が起きたか
以下のコードは、 Next.jsのデフォルトコードです。
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction import type { NextApiRequest, NextApiResponse } from 'next'; type Data = { name: string; }; export default function handler(req: NextApiRequest, res: NextApiResponse<Data>) { res.status(200).json({ name: 'John Doe' }); }
このコードにアクセスがきたら、ステータスコードは200を返しつつボディとして
{ name: 'John Doe' }
を返す、というシンプルなものです。
TypeScriptで作られたものであり、例えば res
という引数は NextApiResponse<Data>
と厳密に型が指定されているためコード補完が効くはずなのですが、IntelliJでこのコードを開いたとき、なぜか補完が効かないようになっていました。
// resの型である NextApiResponse に存在するプロパティを参照しようとしても、コード補完されない res.status(200).json({ name: 'John Doe' });
色々調べてみてもIntelliJ側での対応策は見つけられず、またNext.jsのデフォルトコードなのでコード自体が間違っている可能性も低い状況でした。
そしていよいよ手詰まりになり、「再起動してみるか…」とキャッシュ等を削除して再起動した結果、補完が効くようになりました。
結論
IntelliJはそれなりにキャッシュを使っていたりするので、場合によってはそれが悪さをする場合があります。
なにかおかしな挙動があったら、とりあえず最初に「キャッシュを削除して再起動」を試してみると良いかもしれません。