Azure 静态 Web 应用 NodeJS 环境变量

Posted

技术标签:

【中文标题】Azure 静态 Web 应用 NodeJS 环境变量【英文标题】:Azure Static Web App NodeJS env variables 【发布时间】:2021-07-22 05:53:59 【问题描述】:

我正在使用 Azure 静态 Web 应用服务和 Azure DevOps 管道来部署 NodeJS 应用。管道和构建进展顺利。现在我必须使用 env 变量为后端定义一个 URL,但没有成功。

trigger:
- develop

jobs:
  - job: JobTest
    pool:
      vmImage: ubuntu-latest

    variables:
    - name: BACKEND_URL
      value: https://<some_url>
    - name: System.Debug
      value: true
    steps:
    - task: AzureStaticWebApp@0
      inputs:
        app_location: "/" 
        api_location: ""
        output_location: "dist"

      env:
        BACKEND_URL: $(BACKEND_URL)
        azure_static_web_apps_api_token: $(deployment_token)
    - bash: echo $(BACKEND_URL)
    - bash: echo $PWD

从 NodeJS 代码中,在“/app/src/models/config.ts”文件中我有这个:

export const BACKEND_URL = process.env.BACKEND_URL

如果我将 process.env.BACKEND_URL 更改为实际的 URL,它将起作用。

此外,在 Azure Pipeline 中,此任务正在使用 https://github.com/microsoft/Oryx 构建系统。

问题是如何在代码中使用管道中的 env?

【问题讨论】:

我认为该任务目前不支持额外的环境变量。在这里创建了一个问题来修复github.com/Azure/static-web-apps/issues/392 【参考方案1】:

为了帮助改善这个问题,我添加了一个答案:

环境变量不能与 azure Static Web App 一起使用 azure pipeline。还有here is a ticket which reports the issue。

【讨论】:

【参考方案2】:

Static Web App 不能使用后端变量。

您可以考虑使用.env 文件来配置您的环境变量。格式如“name=value”(不带引号)。

并在要调用环境变量的文件中安装dotenv,通过process.env访问它们。

看看这篇文章:Node.js Environment Variable Configuration by using env file

还有我的另一个答案:https://***.com/a/67052708/13586071

【讨论】:

就是这样设置的。但我想它不适用于@Anthony Chu 指出的静态应用程序。我在/app/build/ 目录中有.env.sample 文件。而且我还有要从/app/ 目录中的package.json 文件执行的bash 脚本cp ./build/.env.sample .env。本地工作正常,但是当我尝试使用 Azure Pipeline 构建它时,我收到文件不存在的错误。所以这就是为什么我把变量放在 env 和它那里,但它从来没有像那样渲染或设置它。 @IvanAK 我也有同样的问题。你找到解决办法了吗? @M Karimi 我没有找到任何解决方案,直到那个时候,如果我记得很好的话,如果你像这样使用这种管道并直接到网络应用程序进行图片和部署,它就会产生问题.其他管道或应用程序没有它。尝试使用 GitHub 操作和工作流程

以上是关于Azure 静态 Web 应用 NodeJS 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

Azure:Web 应用程序 - 从已部署的 nodejs 应用程序中列出应用程序设置

静态 Web 应用的 Azure 前门 WAF ip 限制

批量邀请人们加入 Azure 静态 Web 应用

Azure 静态 Web 应用 API 中的 TypeORM 迁移

哪个是基于NodeJS的Azure Web App(Linux)上运行的默认Web服务器?

如何配置 GitHub Actions 以构建依赖于私有存储库的 Azure 静态 Web 应用程序?