はじめに
本記事では、Next.js
でCloudflare Pages
を利用する際に発生したエラーと、その解決方法について紹介します。
この記事は、個人的なアウトプットを目的として作成しています。内容には誤りや不足が含まれている可能性がありますので、もしお気づきの点がありましたら、ご指摘いただけますと幸いです。
現象
npm run dev
を実行したところ、next.config.ts
内で以下のようなエラーが発生しました。
await (0, _nextdev.setupDevPlatform)();
^
ReferenceError: await is not defined
原因
このエラーの原因は、next.config.ts
がCommonJS モジュールとして解釈されるため、トップレベルで await
を使用できない点にあります。
以下のような記述が原因でエラーになります:
next.config.ts
import type { NextConfig } from "next";
import { setupDevPlatform } from "@cloudflare/next-on-pages/next-dev";
const nextConfig: NextConfig = {
/* config options here */
};
if (process.env.NODE_ENV === "development") {
await setupDevPlatform();
}
export default nextConfig;
解決方法
ファイルの拡張子を.ts
から.mjs
に変更することで、ESM(ECMAScript Modules)として扱われ、トップレベルで await を使用できるようになります。
next.config.mjs
に変更し、型アノテーション(TypeScript特有の記法)も削除します:
next.config.mjs
import { setupDevPlatform } from "@cloudflare/next-on-pages/next-dev";
const nextConfig = {
/* config options here */
};
if (process.env.NODE_ENV === "development") {
await setupDevPlatform();
}
export default nextConfig;
終わりに
Cloudflare Pages
とNext.js
を組み合わせて開発を行う際、ローカル開発用の設定でESMの構文が必要になることがあるようです。
参考