无法在 node.js 或 react 中访问 Gitlab env 变量

Posted

技术标签:

【中文标题】无法在 node.js 或 react 中访问 Gitlab env 变量【英文标题】:Not able to access Gitlab env variables either in node.js or react 【发布时间】:2019-11-03 20:13:08 【问题描述】:

我在 Gitlab 中检查了两个不同的项目,前端和后端。 对于这两个项目,我每个都有一个 Dockerfile。 我已经在 gitlab ci/cd 中设置了环境变量。 我在 kubernetes 中运行 docker 容器, 但我无法在我的 react 或 node.js (express) 应用程序中访问 gitlab env 变量。

我在想,当我执行 process.env.variable_name 时,我可以使用这些 env 变量,但我无法访问它们。

在 kubernetes (deployment.yaml) 环境变量中访问 Gitlab 环境变量的最佳方式是什么?

更新

我发现我们可以在 kubernetes、deployment.yaml 文件(在 env 部分下)中指定 env 变量。如何将 gitlab 环境变量传递给 deployment.yaml?

【问题讨论】:

【参考方案1】:

要将环境变量注入使用 create-react-app 创建的 react 应用程序,您应该将前缀 REACT_APP_ 添加到每个 env var。

在构建过程中,webpack 会选择所有带有该前缀的环境变量并将它们添加到环境中。

【讨论】:

【参考方案2】:

我能够使用 Gitlab K8S_SECRET_ 变量命名约定访问 Node js 应用程序中的环境变量。 例如在 gitlab 中定义一个像K8S_SECRET_MY_TEST_API 这样的变量。 在 Node js 中,您可以使用 process.env.MY_TEST_API 访问此变量。

我面临的唯一问题是这些变量在 React 应用程序中不可用。仍在试图弄清楚这一点。解决该问题后,我将在此处更新。

【讨论】:

刚刚意识到它的 1 岁帖子。如果您知道我的问题的答案,请在此处回复。【参考方案3】:

Docker 容器要求您在运行时设置环境变量:

https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file

--env , -e      Set environment variables

【讨论】:

以上是关于无法在 node.js 或 react 中访问 Gitlab env 变量的主要内容,如果未能解决你的问题,请参考以下文章

Node.js - 在 Server.js 上执行 Node 命令(Express + React + Webpack)

node.js学习之webpack打包react最简单用法

尝试使用 node.js 和 GD 或 imagemagick 访问和操作图像

无法在 node.js 中交换访问令牌的代码。 Mailchimp API

无法从 React 客户端向 Node.js websocket 服务器发送消息

React App 和 node.js 后端 api 安全获取