当前位置: 首页 > news >正文

【Next】配置环境变量

Next.js


1) Next.js 支持的环境变量来源

  • 项目根目录下的 .env* 文件(Next.js 会自动加载)。
  • 运行时(CLI / CI / 系统)通过 shell 导出的环境变量(export FOO=bar / CI 环境变量)。
  • next.config.js 中的 env(旧 API,不推荐长期使用;会把变量打包进客户端)。(Next.js)

说明:要在浏览器端可访问,变量名必须以 NEXT_PUBLIC_ 开头;否则只能在服务器端使用(server-side / Node 中)。(Next.js)


2) 常用 .env 文件与优先级(从,Next 官方推荐的加载顺序)

(注意:下面以 NODE_ENV 决定的 mode 举例 —— development / production / test 等)

优先级(以高 → 低)通常为:

  1. .env.local
  2. .env.[mode].local(例如 .env.test.local
  3. .env.[mode](例如 .env.test
  4. .env

也就是说,如果同一个变量在多个文件都定义,最先匹配到的文件值生效。在 NODE_ENV=test 时,.env.test.local 会覆盖 .env.test,而 .env.local(通用本地覆盖)通常优先于 mode-specific 文件。(Next.js)


3) 如何写「测试环境」的变量(文件方式)

常见做法是在仓库根目录创建:

  • .env.test —— 测试环境共享变量(会被版本控制视情况而定,通常列入 .gitignore)
  • .env.test.local —— 本机/敏感覆盖(绝对不要提交)

示例 .env.test

DATABASE_URL=postgres://test:pass@localhost:5432/testdb
API_KEY=local-test-key
NEXT_PUBLIC_FEATURE_FLAG=false

如果你在本地或 CI 想覆盖敏感值,就放 .env.test.local(不提交)。Next 会在 NODE_ENV=test 时按上面优先级加载这些文件。(Next.js)


4) 如何通过脚本(package.json)控制:设置 NODE_ENV / 选择 mode

两种常见方式:

1) 直接在脚本里设置 NODE_ENV(UNIX)

{"scripts": {"test": "NODE_ENV=test jest"}
}

(注意:Windows 上直接这样写会有兼容性问题。)(Stack Overflow)

2) 推荐跨平台写法 — 用 cross-env(最常见)
先安装:

npm i -D cross-env

脚本:

{"scripts": {"test": "cross-env NODE_ENV=test jest","build:test": "cross-env NODE_ENV=test next build","start:test": "cross-env NODE_ENV=test next start"}
}

cross-env 确保在 Windows / macOS / Linux 下行为一致。也可用 dotenv-cli / env-cmd 在脚本启动前显式加载特定 .env 文件(见下)。(blog.jimmydc.com)

3) 用 dotenv-cli / env-cmd 显式加载某个 .env 文件(可选)

{"scripts": {"test": "dotenv -e .env.test -- jest"}
}

这样可以在不依赖 NODE_ENV 的情况下直接指定要加载的 env 文件。(Medium)


http://www.dtcms.com/a/495611.html

相关文章:

  • 机器学习十大经典算法解析与对比
  • 铜仁搜狗推广企业seo推广的绝密诀窍曝光
  • 两部门明确:治理价格无序竞争,报价竞标不得低于成本
  • 进行材料水蒸气吸附稳定性测试的比表面及孔径分析仪推荐
  • 西安网站制作西安搜推宝网络seo专员的工作内容
  • 蓝潮网站建设成都市制作企业网站
  • 博客安全攻防演练:从实战视角构建全方位防护体系
  • 应⽤层⾃定义协议与序列化
  • MySQL 逗号分隔的字符串查询的集中方式
  • 第12章 STM32 ADC采集内部温度传感器和基准电压的配置和测试
  • 网站推广公司 wordpress.net做网站之前设置
  • 台州网站制作公司个人免费注册公司网站
  • 怎么网站建设到百度怎么样找回网站密码
  • 如何检测网站死链沧州做网站的
  • 河南特色农产品识别系统:让AI守护“中原味道”
  • Linux系统--信号--信号屏蔽(阻塞)核心函数
  • GaussDB 应用侧报Read timed out解决方法
  • 一种解决java fst序列化兼容性问题的方法
  • ROS系统中常用的数据传输方式——参数
  • 网站移动端是什么问题吗移动商城积分兑换
  • 淘宝API数据采集的日志监控与异常报警
  • 熊猫(安卓):识字软件
  • 水题记录2.3
  • Google Landmarks Dataset v2 (GLDv2):500万地标图像的识别与检索基准​(数据集概览、下载与使用全流程​)
  • 在设置feign请求的请求头透传(Header Propagation)时获取不到当前服务请求头的信息
  • 服装网站设计网站强制分享链接怎么做的
  • DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(二)
  • WPF中的变换(Transform)功能详解
  • 北京做网站主机开通成功网站建设中
  • 工业显示器在微铣削机床中的应用