💭
[NextJS]クライアントサイドで環境変数を読み込むときはNEXT_PUBLICをつけよう
はじめに
環境変数周りでよくエラーを発生させてしまったので記事にしました。
クライアントサイドで実行するときは、NEXT_PUBLIC_
というPREFIXを付けないといけません。という内容です。
発生したエラー
環境変数を作成
.env.local
というファイルをrootに作成するだけでOKです
.env.local
TEST=test
NEXT_PUBLIC_TEST=test-public
サーバーサイドでの実行
page.tsxに環境変数を両方書きました。(App Router)
page.tsx
import { NextPage } from "next";
const Page: NextPage = () => {
return (
<>
<h1>ENV TEST</h1>
<p>{process.env.TEST}</p>
<p>{process.env.NEXT_PUBLIC_TEST}</p>
</>
)
}
export default Page
サーバーサイドで実行したので、どちらも実行されて表示されることを確認しました。
クライアントサイドで実行
先程の1行目にuse client
を追加します
'use client'
import { NextPage } from "next";
const Page: NextPage = () => {
return (
<>
<h1>ENV TEST</h1>
<p>{process.env.TEST}</p>
<p>{process.env.NEXT_PUBLIC_TEST}</p>
</>
)
}
export default Page
process.env.TEST
のみ表示されず、エラーが発生しました。
おわりに
NextJSで環境変数を使うときの注意でした。
参考
Discussion