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 环境变量的主要内容,如果未能解决你的问题,请参考以下文章