在NextJS中,是否有辦法在頁面目錄之外設定環境變數?我有一個利用函式,在一個地方提供基本的API路由。然而,由于這是一個util函式,它沒有被定義在一個頁面上。如果可能的話,我想避免在每個頁面上創建一個getStaticProps來獲取我的私有環境變數。
有什么想法嗎?
utils/index.ts (not on a nextJS page)
export const apiAddress =
process.env.NEXT_PUBLIC_CURRENT_ENV === 'PRODUCTION' ?
? process.env.PROD_API
: process.env.DEV_API。
...
uj5u.com熱心網友回復:
我有一個類似的問題,我無法在nextjs應用程式中訪問我的env vars。
解決方案是在 next.config.js 中讀取它們并隱式傳遞它們。
我的例子是從/environments/env.development中加載環境,但你可以使用任何你想要的位置。
所以我的下一個next.config.js看起來像這樣:
const path = require('path')
const { parsed: localEnv } = require('dotenv-safe').config({
allowEmptyValues: false,
path: path.resolve(__dirname, `environments/.env.development`)。
})
const nextConfig = {
env: localEnv,
}
module.exports = nextConfig
你應該能夠在你的.env檔案中訪問ENV變數,就像通常所說的那樣:
process.env.YOUR_VARIABLE
另外
。基于環境,你也可以從你的package.json中使用一個預定義的ENV var,這可以讓你為你的環境加載正確的檔案。
在你的package.json中,在scripts部分定義以下內容:
"dev:development" : "ENV=development node server.js"。
"dev:staging": "ENV=staging node server.js", "dev:staging".
...
然后你就可以訪問ENV var,并且可以在next.config.js中直接使用它來達到你的目的。
基于上面的例子:
path: path. resolve(__dirname, `environments/.env.${process.env.ENV}`)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/322745.html
標籤:
