读取操作系统(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_URLNOTIFICATION_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 和凭据的主要内容,如果未能解决你的问题,请参考以下文章

Mac下添加环境变量

mac os x10.11.2系统eclipse无法读取环境变量的问题

【mac】环境变量编辑

Mac环境变量配置

MAC环境变量的配置小笔记

MAC 设置环境变量PATH 和 查看PATH