3. サーバーサイド & API デバッグ
3.1 getServerSideProps / API Routes
export async function getServerSideProps(ctx) {
debugger;
const data = await fetchData(ctx.params.id);
return { props: { data } };
}- VS Code の Node デバッガで
debugger;が機能 NODE_OPTIONS="--inspect=9229"を手動設定しても OK
3.2 ログ出力のベストプラクティス
- pino + pino-pretty を導入:
npm install pino pino-pretty logger.js:import pino from 'pino'; export const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty' } });- API 内で:
import { logger } from './logger'; logger.info({ route: '/api/user', userId }, 'API called'); - Structured Logging により Kibana/Datadog で検索しやすく。
5. 生産性向上ワークフロー
5.1 ホットリロード vs フルリロード
fast-refreshは UI 層のみリロード。- 状態が壊れた際は
.next削除後のフルリロードで環境リセット。
5.2 カスタムエラーページ
// pages/_error.tsx
import NextErrorComponent from 'next/error';
export default function Error({ statusCode }) {
return <NextErrorComponent statusCode={statusCode} />;
}getInitialPropsでエラー情報を取得し、Sentry 連携も可能。
以上を社内テンプレートとして整備し、CI/CD やドキュメントに組み込むことで、プロダクションレベルのデバッグを標準化できます。
confidence: 0.07