javascript - 在 nextjs 的页面目录之外设置环境变量?
问题描述
有没有办法在 NextJS 的 pages 目录之外设置环境变量?我有一个在一个地方提供基本 API 路由的 util 函数。但是,由于这是一个 util 函数,它没有在页面上定义。如果可能的话,我想避免getStaticProps
在每个页面上创建一个来获取我的私有环境变量。
有什么想法吗?
utils/index.ts(不在 nextJS 页面上)
export const apiAddress =
process.env.NEXT_PUBLIC_CURRENT_ENV === 'PRODUCTION'
? process.env.PROD_API
: process.env.DEV_API;
...
解决方案
我有一个类似的问题,我无法在 nextjs 应用程序中访问我的环境变量。
解决方案是在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"
...
然后,您可以访问 ENV var,并可以在next.config.js
.
基于上面的例子:
path: path.resolve(__dirname, `environments/.env.${process.env.ENV}`),
推荐阅读
- floating-point - 是否可以将此数字存储为具有这些限制的浮点数?
- arrays - 字符串文件,在另一个文件中找到匹配的字符串
- html - 为移动设备放置 div 和响应式设计的问题,你能检查我的代码吗?
- javascript - 使用fabric js在对象内部自由绘图
- javascript - WordPress:ServiceWorker 的 Push.js 实现会导致问题
- wso2 - 通过代码 WSO2 Identity Server 配置服务提供者
- java - 每次刷新后在java中写入文件时查看文件的大小和内容(新添加的字符串)
- php - PHP:如何修复 array_pop 和值 0
- c# - C#-Mssql | 同网2台电脑同时连接公网数据库的问题
- python - 处理文本文件并将其导出为 csv 文件