我在Azure中部署了一个静态Web应用程序,配置设置如下:
我有以下authConfig.ts:
import { Configuration } from "@azure/msal-browser";
// Config object to be passed to Msal on creation
export const msalConfig: Configuration = {
auth: {
clientId: `${process.env["REACT_APP_AAD_UI_APP_CLIENT_ID"]}`,
authority: `https://login.microsoftonline.com/${process.env["REACT_APP_AAD_APP_TENANT_ID"]}`,
redirectUri: "/",
postLogoutRedirectUri: "/"
}
};
// scopes
export const loginRequest = {
scopes: [`api://${process.env["REACT_APP_AAD_API_APP_CLIENT_ID"]}/user_impersonation`]
};
// endpoints
export const config = {
endpoint: `${process.env["REACT_APP_AAD_APP_SERVICE_BASE_URI"]}/api/v1/items`
};
在部署后运行此命令时,我看到以下错误:
似乎没有从配置中阅读tenantId。请求URL应该是
https://login.microsoftonline.com/tenant-id/v2.0/.well-known/openid-configuration
在我添加了.env文件和以下值后,它运行得很好:
REACT_APP_AAD_UI_APP_CLIENT_ID= 'xxxx'
REACT_APP_AAD_API_APP_CLIENT_ID= 'yyyy'
REACT_APP_AAD_APP_TENANT_ID= 'abcd'
REACT_APP_AAD_APP_SERVICE_BASE_URI= 'https://xxx.api.azurewebsites.net'
我错过了什么?
2条答案
按热度按时间hsvhsicv1#
process
对象在node.js环境中可用。您无法从浏览器控制台访问它。但是,您可以将其记录在代码中,以便在应用程序在node.js上下文中运行时检查日志。当你添加.env文件时,它开始在本地运行,因为node.js应用在其引导过程中加载了它,并使变量可用。在Azure服务器上运行构建的代码时,如果你没有在node.js上下文中运行它,那么你需要执行以下操作。
你需要有一个源来获取它。在构建时,你需要将.env文件中的值转换为部署包中包含的config.json或yaml文件。在代码中,你读取这个文件并将值合并到配置对象中。但是,请注意,当阅读这个文件时,配置值将被暴露。
如果您在Azure服务器上的node.js上下文中运行它,则需要包含.env文件。这不会暴露您的配置值。
另一种方法是从运行应用程序的容器中提供配置值-假设您有一个Web应用程序,并且您的react应用程序正在其上下文中运行,然后您可以将配置提升到全局窗口对象中并使用它。假设您将其加载到window.appname.config中并从那里读取它。
希望这个有用。
kcugc4gi2#