typescript 如何在运行时像ENV vars一样配置spfx扩展?

4dc9hkyq  于 2022-11-26  发布在  TypeScript
关注(0)|答案(2)|浏览(120)

例如,如果我编写一个node express应用程序,我就有机会从服务器配置中传递一些env变量。
SharePoint Online也有机会吗?由于SharePoint Online是一种托管服务,因此无法实现。
是否有可能的解决方法?
关于这个问题,我一直在想办法。
干杯托马斯

n53p2ov0

n53p2ov01#

作为一个选项,您可以使用属性包(如站点属性包)定义站点的自定义属性,然后从SPFx Web部件获取这些属性。SharePoint中的许多内容都有属性包,包括租户、站点、列表等。
要设置站点的属性包键/值(powershell),请执行以下操作:

Connect-PnPOnline -Url https://<yourdomain>.sharepoint.com/sites/<yoursite>
Set-PnPPropertyBagValue -Key MYKEY -Value MYVALUE

要从SPFx Web部件获取此“site”值,可以使用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文件(例如,放置到站点资源),然后从SPFx Web部件读取它。
不确定这是否是常见的做法在任何方面(可能不是),但只是给予一些选择。

5ktev3wc

5ktev3wc2#

您能否详细说明您尝试访问哪些变量?

  • SPFx有几个“环境”属性可作为上下文对象的一部分
  • 使用应用程序清单文件部署扩展模块时,可以更改扩展模块项目根目录中的属性
  • 上面列出的选项由尼古拉是选项,如果前2不为您工作。

如果你给予一些更多的细节,或者发布一个代码片段,说明你正在努力完成的工作,我相信你可以找到你正在寻找的东西

相关问题