GitLab CI触发AWS CDK时TypeScript无法正确读取环境变量
解决GitLab CI环境变量在TypeScript中读取不到的问题
确认环境变量是否传递至Node.js进程
GitLab CI的变量默认会注入流水线的Shell环境,但如果你的TypeScript代码是通过npm/yarn脚本启动的,要确保启动脚本时Shell的环境变量能被Node.js进程继承。如果是在容器中运行任务,需确认变量已正确传入容器实例。通过dotenv管理环境变量(适用于Node.js项目)
若项目需要在构建或运行阶段读取环境变量,可在GitLab CI的脚本中将变量写入.env文件,再通过dotenv加载:
# .gitlab-ci.yml 配置 script: - echo "URL_ORIGIN=$URL_ORIGIN" > .env - npm install - npm run build - npm run start
// TypeScript代码 import dotenv from 'dotenv'; dotenv.config(); const urlOrigin = process.env.URL_ORIGIN;
前端构建工具的变量注入(Vite/Webpack等)
如果是前端项目,浏览器环境无法直接访问Node.js的process.env,需借助构建工具注入变量:- Vite:变量需以
VITE_为前缀命名,比如GitLab CI中配置VITE_URL_ORIGIN: "url",TS中通过import.meta.env.VITE_URL_ORIGIN读取。 - Webpack:使用
DefinePlugin在配置中注入变量,示例:
之后在TS中直接用// webpack.config.js const webpack = require('webpack'); module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env.URL_ORIGIN': JSON.stringify(process.env.URL_ORIGIN) }) ] };process.env.URL_ORIGIN读取。
- Vite:变量需以
检查变量名大小写与作用域
环境变量在Linux/macOS环境下大小写敏感,确保GitLab CI配置的变量名和TS中读取的完全一致;同时确认变量配置在全局variables块,或当前运行TS代码的job的variables块中,避免作用域不匹配。
内容的提问来源于stack exchange,提问作者Mahmoud Saad
相关产品推荐
相关产品推荐

