ここまでのあらすじ:Auth0 に挑戦中。npx create-next-app@latest
で新規 Next.js アプリを用意して、Auth0 のチュートリアル (Dashboard > Applications > Quickstart) に従ってぽちぽち進めていったところ、動いたけどなんかエラーが出る。
問題
というわけで諸々進めて、これを追加したところ。
const session = await getSession();
するとこんな感じのエラーがサーバー側で出るようになった。
Error: Route “/” used
cookies().getAll()
.cookies()
should be awaited before using its value. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apisError: Route “/api/auth/[auth0]” used
params.auth0
.params
should be awaited before using its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis
提示されている URL を開いて、まあ言わんとするところはわかるんですがこちらは API 呼んでるだけなのでどうしたものか。
文章を読むと「Next.js v15 では」みたいな表現が出てくるので、まだ Auth0 側の更新が追いついてないのかなと推測。バージョンを下げてみることにする。
解決策
Next.js と React のバージョンを下げる
Next.js v15 なのでこれを v14 にする。すると react
のバージョンが合わないぞとのことなので、こちらも 19 から 18 へ下げる。react-dom
についても同様に言われるので同様にする。
$ npm i next@14 npm error code ERESOLVE npm error ERESOLVE unable to resolve dependency tree npm error npm error While resolving: [email protected] npm error Found: [email protected] npm error node_modules/react npm error react@"19.0.0-rc-69d4b800-20241021" from the root project npm error npm error Could not resolve dependency: npm error peer react@"^18.2.0" from [email protected] npm error node_modules/next npm error next@"14" from the root project npm error npm error Fix the upstream dependency conflict, or retry npm error this command with --force or --legacy-peer-deps npm error to accept an incorrect (and potentially broken) dependency resolution. npm error npm error npm error For a full report see: npm error /home/ginpei/.npm/_logs/2024-10-27T00_38_30_607Z-eresolve-report.txt npm error A complete log of this run can be found in: /home/ginpei/.npm/_logs/2024-10-27T00_38_30_607Z-debug-0.log
というわけで、こう。
$ npm i next@14 react@18 react-dom@18
設定ファイルのバージョンを下げる
これで起動するとエラーが出る。
Error: Configuring Next.js via ‘next.config.ts’ is not supported. Please replace the file with ‘next.config.js’ or ‘next.config.mjs’.
.ts
には Next.js v15 で対応したんだな。というわけで拡張子を .js
にして、中身も TS 要素を削る。
/** @type {import('next').NextConfig} */ const nextConfig = { /* config options here */ }; module.exports = nextConfig;
これで普通に動くようになった。v15 の機能は使えないけど、まあ別にそこは今必要ではないので。
おしまい
追ってないのでいま調べたらまだ Next.js v15 が出てから 1 週間経ってなかったのでそのうち対応入ると思います。
ところで React のバージョンが 19.0.0-rc-69d4b800-20241021
なんですがどういうことですか、Next.js 公式的にリリース前のバージョン使わせるのアリなんですか……?