CircleCI项目配置环境变量后,JS文件无法通过process.env访问问题
解决CircleCI环境变量在JS中返回undefined的问题
问题核心
你在CircleCI项目中设置的环境变量,虽然通过$BASH_ENV导出到了shell会话,但Node.js进程不会自动继承这些变量,除非明确把变量传递给Node进程或通过构建工具暴露。
具体解决方案
直接在Node启动命令中传递变量
如果你的启动命令是node app.js,修改为:ENV_VAR="$ENV_VAR" node app.js这样Node进程的环境中会直接包含该变量,
process.env.ENV_VAR即可正常读取。简化CircleCI配置,利用内置变量注入
CircleCI默认会把项目设置的环境变量注入到所有run步骤的环境中,不需要手动写入$BASH_ENV(动态生成变量的场景除外)。你的YAML可以简化为:jobs: build: ... steps: - run: node app.js只要项目中已正确设置
ENV_VAR,Node进程就能直接访问到该变量。针对前端构建工具的配置
如果使用Webpack、Vite等构建工具,需要手动配置暴露环境变量:- Webpack 用
DefinePlugin:const webpack = require('webpack'); module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env.ENV_VAR': JSON.stringify(process.env.ENV_VAR) }) ] }; - Vite 配置
define选项:export default { define: { 'process.env.ENV_VAR': JSON.stringify(process.env.ENV_VAR) } };
- Webpack 用
基础检查项
- 确认环境变量名称拼写完全一致(大小写敏感);
- 确认变量是设置在项目全局,而非仅针对特定分支或上下文。
内容的提问来源于stack exchange,提问作者athi
相关产品推荐
相关产品推荐

