事象
開発環境で開発サーバーを起動するためにyarn dev
を実行したところ、以下のエラーが表示されました。
% yarn dev
yarn run v1.22.18
$ next dev -p 3050
/path/to/app/node_modules/next/dist/server/web/spec-extension/request.js:28
class NextRequest extends Request {
^
ReferenceError: Request is not defined
at Object.<anonymous> (/path/to/app/node_modules/next/dist/server/web/spec-extension/request.js:28:27)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
at Module.load (node:internal/modules/cjs/loader:1076:32)
at Function.Module._load (node:internal/modules/cjs/loader:911:12)
at Module.require (node:internal/modules/cjs/loader:1100:19)
at Module.mod.require (/path/to/app/node_modules/next/dist/server/require-hook.js:64:28)
at require (node:internal/modules/cjs/helpers:119:18)
at Object.<anonymous> (/path/to/app/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js:37:18)
at Module._compile (node:internal/modules/cjs/loader:1198:14)
✨ Done in 0.44s.
原因
What version of Node.js have you got on your Vercel deployment? If it is 16.x, or less, then you should set it to 18.x, assuming that none of the packages you are ussing, require lower Node.js versions.
Basically, you should have the same Node.js version, locally and on Vercel.
Figuring out the Node version on Vercel: https://vercel.com/changelog/node-js-version-now-customizable-in-the-project-settings
対処
現在使用しているNode.jsのバージョンを確認します。
% node -v
v16.20.2
最新のLTSバージョンをインストールします。
% n lts
installing : node-v20.15.0
mkdir : /usr/local/n/versions/node/20.15.0
fetch : https://nodejs.org/dist/v20.15.0/node-v20.15.0-darwin-arm64.tar.xz
copying : node/20.15.0
installed : v20.15.0 (with npm 10.7.0)
% n list
node/16.20.2
node/20.15.0
インストールしたLTSバージョンに変更します。
% n
node/16.20.2
ο node/20.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
% node -v
v20.15.0
yarn dev
を実行してエラーが表示されなくなったことを確認しました。