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 应用程序中列出应用程序设置
Azure 静态 Web 应用 API 中的 TypeORM 迁移