You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JEST测试服务器时如何访问process.env中的RAZZLE环境变量

为什么测试场景下RAZZLE环境变量会丢失

Razzle 框架的 RAZZLE_ 开头环境变量,默认只有在执行 razzle start、razzle build 这类官方启动命令时,才会被自动注入到 Node 进程的 process.env 对象中。你直接运行测试命令(比如 Jest)时,没有触发 Razzle 的环境变量加载流程,因此 process.env.RAZZLE_PUBLIC_DIR 为 undefined,express.static 接收空路径作为参数就会抛出 root path required 错误。

测试中访问RAZZLE环境变量的解决方法
  • 方案1:测试启动前手动注入环境变量
    变量较少时可以直接在测试命令中拼接变量,修改 package.json 中的 test 脚本:

    "test": "RAZZLE_PUBLIC_DIR=./public jest"
    

    如果需要的变量较多,可以把所有测试用环境变量写到 .env.test 文件中,配合 dotenv 加载:

    1. 安装dotenv依赖:npm install dotenv --save-dev
    2. 在测试文件最顶部(必须早于引入 server.js 的代码)添加加载逻辑:
    require('dotenv').config({ path: '.env.test' })
    
    1. 在 .env.test 中填写所有需要的变量:
    RAZZLE_PUBLIC_DIR=./public
    # 其他RAZZLE_开头的测试用环境变量可依次添加
    
  • 方案2:给server代码加兜底逻辑
    从业务代码层面兼容不同运行环境,避免环境变量缺失直接报错,修改 server.js 中的静态资源配置行:

    .use(express.static(process.env.RAZZLE_PUBLIC_DIR || './public'))
    

    这样不管是正式运行还是测试场景,都有默认路径兜底,不会直接抛出错误。

  • 方案3:使用Razzle官方测试预设
    如果你用Jest作为测试框架,可以直接用Razzle提供的测试初始化工具,它会自动加载所有RAZZLE相关环境变量:
    在jest.config.js中添加配置:

    module.exports = {
      setupFiles: ['razzle-test-init'],
      // 其余Jest配置保持不变
    }
    

内容的提问来源于stack exchange,提问作者LauraRavenclaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:18:00