typescript - 如何在运行时配置 spfx 扩展(如 ENV 变量)?

标签 typescript sharepoint-online spfx pnp-js

如果我编写一个 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/

相关文章:

azure - 如何在单个脚本中修改多个文件的文件创建时间

node.js - 即使我在 config.json 的外部部分中定义,jQuery 也不会作为模块加载

javascript - 不使用 angular 中的 javascript 在 div 上设置属性值

typescript - 如何将 typescript 枚举值转换为字符串

javascript - 通过 URL 添加附件到 Outlook 邮件

jquery - SPFx 不能使用 JQuery?

css - 如何强制 Office UI Fabric ChoiceGroup 水平对齐

Typescript - 获取属性类型、编译时间

javascript - 对象原型(prototype)自定义函数 [Angular 7.2 - TS 3.2]

javascript - jQuery 脚本不断将我从我正在尝试编辑的页面重定向