Open3

Next.jsのMiddlewareは、Edge runtimeのみのサポートでNode.js runtimeは使えない、とはどういうことか

azoookidazoookid

環境: Next.js v14.1

https://nextjs.org/docs/app/building-your-application/routing/middleware#runtime
ドキュメントを見るに、こう書いてある

Middleware currently only supports the Edge runtime. The Node.js runtime can not be used.

このNode.jsランタイムは使えない、とはどういうことか?Next.jsアプリケーションをNode.js環境でデプロイするとmiddlewareは使えないのか?(そんなことはないはずだが、どういうことか調べる)

azoookidazoookid

https://nextjs.org/docs/app/building-your-application/rendering/edge-and-nodejs-runtimes
runtimeについてのドキュメントを見ると、こう書いてある。

In the context of Next.js, runtime refers to the set of libraries, APIs, and general functionality available to your code during execution.

Next.jsの文脈においては、runtimeの差はどういうAPIが使用できるかの差でしかなさそう。
Edge runtimeはstarndardなWeb APIのみが使えるので、例えばNode.js固有のAPIであるfile systemの読み書きなどはできない。

azoookidazoookid

結論、Node.js環境でデプロイしたりしても、Middlewareは動きそう。

Edgeで使えるAPIはNode.js APIを薄くしたようなものであるので、軽さが売り。
たしかにMiddlewareは毎リクエスト走るものなので、軽ければ軽いだけいいから、理にかなっていそう。