类型错误:无法读取未定义的属性(读取“tokenType”)

问题描述 投票:0回答:1

尝试使用 Power BI Angular 库嵌入报表时出现以下错误。

TypeError: Cannot read properties of undefined (reading 'tokenType')
    at isSaaSEmbedWithAADToken (reportEmbed?navContentPaneEnabled=false&uid=ame7c8:586:38)
    at getModelsAndExploration (reportEmbed?navContentPaneEnabled=false&uid=ame7c8:696:17)
    at getModelsAndExplorationAndConceptualSchema (reportEmbed?navContentPaneEnabled=false&uid=ame7c8:840:9)
    at xhr.onreadystatechange (reportEmbed?navContentPaneEnabled=false&uid=ame7c8:505:37)

这是我们用来嵌入报告的代码。

this.msalService.initialize().subscribe(() => {
      this.msalService.acquireTokenSilent({
        scopes: environment.powerBiConfig.scopes,
        account: this.authService.getUser()
      }).subscribe(async (result) => {
        const embedConfig: pbi.service.IComponentEmbedConfiguration = {
          type: 'report',
          id: this.report.identifier,
          accessToken: result.accessToken,
          tokenType: models.TokenType.Aad,
          embedUrl: 'https://app.powerbi.com/reportEmbed?navContentPaneEnabled=false',
          settings: {
            panes: {
              filters: {
                visible: false,
              }
            }
          }
        };
        const defaultFilters = this.createDefaultFilters();
        const powerBiReport: any = this.powerBiService.embed(this.reportContainer.nativeElement, embedConfig);
        powerBiReport.on('loaded', async () => {
          await powerBiReport.setFilters(defaultFilters);
        });
      });
    });

跟踪 Power BI Embedded JS 文件(我们无法控制)的堆栈跟踪后,我们能够确定导致问题的原因。 以下函数需要传递配置:

function isSaaSEmbedWithAADToken(config) {
    // Default token type is Aad (0)
    const tokenType = config.tokenType || 0;
    return (window.isSaasOrPaasEmbed === true) && (tokenType === 0);
}

然而,导致错误的代码段实际上并未传递配置。

if (isSaaSEmbedWithAADToken() && config.settings && config.settings.personalBookmarksEnabled) {
    url += "&defaultBookmarkEnabled=true";
}

即使我们这边做错了什么,这也是微软这边的一个错误。修复方法只是像代码的其他部分已经执行的那样传递配置。

我们的设置是否有问题导致此问题? Power BI Embedded JS 文件似乎是闭源的。

angular typescript powerbi powerbi-embedded power-bi-angular
1个回答
0
投票

问题已在 Microsoft 端得到修复。 https://github.com/microsoft/powerbi-client-angular/issues/66

© www.soinside.com 2019 - 2024. All rights reserved.