读取操作系统(Linux 和 MAC)环境变量以不公开 Angular 9 中的后端 IP 和凭据
Posted
技术标签:
【中文标题】读取操作系统(Linux 和 MAC)环境变量以不公开 Angular 9 中的后端 IP 和凭据【英文标题】:Read OS(Linux and MAC) environment variable to not expose backend IP's and Credentials in angular 9 【发布时间】:2020-10-31 10:14:08 【问题描述】:我正在尝试在生产环境中构建和部署我的 Angular 9 项目。主要目标是保护我的后端服务 IP 地址和凭据,因为这些环境不会因安全问题而暴露给任何人。 Build and Serve 适用于当前设置,但问题是我无法访问/读取环境变量,除了我使用 shell 创建的环境变量。只有我可以读取 TEST1 变量的值,但 BASE_URL 和 NOTIFICATION_URL 显示未定义。一件重要的事情是我对系统操作系统环境变量一无所知,并且系统环境不会在生产构建中工作。我只是用谷歌搜索并在 shell 中创建了这些变量,并且 echo 正确显示了值,但我不确定我的方式是否正确。请建议我合适的方式或目前我犯错的地方。那么生产呢?
我创建的 Shell 变量:
自定义 Webpack
const webpack = require('webpack');
module.exports =
plugins: [new webpack.DefinePlugin(
'process.env':
BASE_URL: JSON.stringify(process.env.BASE_URL),
NOTIFICATION_URL: JSON.stringify(process.env.NOTIFICATION_URL),
TEST1: JSON.stringify(process.env.TEST1)
)]
typings.d.ts
// @ts-ignore
declare var process: Process;
interface Process
env: Env
interface Env
BASE_URL: string
NOTIFICATION_URL: string
TEST1: string
interface GlobalEnvironment
process: Process;
environment.prod.ts
export const environment =
production: true,
baseUrl: `$process.env.BASE_URL`,
notificationUrl: `$process.env.NOTIFICATION_URL`,
test: `$process.env.TEST1`,
;
【问题讨论】:
每项服务都为您提供了一个局部变量环境来创建/删除变量,而不是在终端中创建。如果您使用 Heroku devcenter.heroku.com/articles/config-vars,或者您可以使用 ssh 创建 .env 文件! 【参考方案1】:在服务器上永久设置环境变量
编辑/etc/environment
粘贴:
BASE_URL=http://localhost:8080/
TEST_URL=http://localhost:8080/
保存
在当前运行中应用:source /etc/environment
注意:当你 ssh 进入机器并使用 export TEST=test 时,会创建一个会话范围的环境变量,只有该会话中的命令可以访问它。并且在关闭 ssh 会话后会被删除。
【讨论】:
以上是关于读取操作系统(Linux 和 MAC)环境变量以不公开 Angular 9 中的后端 IP 和凭据的主要内容,如果未能解决你的问题,请参考以下文章