如果我编写一个 Node Express 应用程序,我有机会从服务器配置传递一些环境变量。
SharePoint Online 也有机会吗? 由于 SharePoint Online 是一项托管服务,因此恕我直言,没有办法这样做。
是否有解决办法?
我坚持提出有关这个问题的任何想法。
干杯托马斯
最佳答案
作为一个选项,您可以使用属性包(例如网站属性包)来定义网站的自定义属性,然后从 SPFx Web 部件获取它们。 您在 SharePoint 中拥有许多内容的属性包,包括租户、网站、列表等。
设置站点的属性包键/值 (powershell):
Connect-PnPOnline -Url https://<yourdomain>.sharepoint.com/sites/<yoursite>
Set-PnPPropertyBagValue -Key MYKEY -Value MYVALUE
要从 SPFx Web 部件获取此“站点”值,您可以使用 allProperties
API(在 Web 部件初始化中的某个位置):
const propertyBag = await sp.web.allProperties.get();
const value = propertyBag.MYKEY;
console.log(value) // logs "MYVALUE"
如果您不使用 pnpjs,则相同的代码:
// context = <web part context>
const apiUrl = `${context.pageContext.web.absoluteUrl}/_api/web/allProperties`;
const rsp = await context.spHttpClient.get(apiUrl, SPHttpClient.configurations.v1);
const propertyBag = await rsp.json();
const value = propertyBag.MYKEY;
或者,您可以将 .env 文件(例如,放入网站 Assets ),然后从 SPFx Web 部件中读取它。
不确定这是否是常见做法(可能不是),但只是提供一些选择。
关于typescript - 如何在运行时配置 spfx 扩展(如 ENV 变量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74499046/