3 votes

objet global powerbi introuvable dans le texte type

J'essaie d'utiliser ce code power bi ci-dessous où l'erreur powerbi object not found est obtenue dans mon code typescript :

 // Read embed application token from textbox
var txtAccessToken = $('#txtAccessToken').val();

// Read embed URL from textbox
var txtEmbedUrl = $('#txtReportEmbed').val();

// Read report Id from textbox
var txtEmbedReportId = $('#txtEmbedReportId').val();

// Read embed type from radio
var tokenType = $('input:radio[name=tokenType]:checked').val();

// Get models. models contains enums that can be used.
var models = window['powerbi-client'].models;

// We give All permissions to demonstrate switching between View and Edit mode and saving report.
var permissions = models.Permissions.All;

// Embed configuration used to describe the what and how to embed.
// This object is used when calling powerbi.embed.
// This also includes settings and options such as filters.
// You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
var config= {
    type: 'report',
    tokenType: tokenType == '0' ? models.TokenType.Aad : models.TokenType.Embed,
    accessToken: txtAccessToken,
    embedUrl: txtEmbedUrl,
    id: txtEmbedReportId,
    permissions: permissions,
    settings: {
        filterPaneEnabled: true,
        navContentPaneEnabled: true
    }
};

// Get a reference to the embedded report HTML element
var embedContainer = $('#embedContainer')[0];

// Embed the report and display it within the div container.
var report = powerbi.embed(embedContainer, config);

// Report.off removes a given event handler if it exists.
report.off("loaded");

// Report.on will add an event handler which prints to Log window.
report.on("loaded", function() {
    Log.logText("Loaded");
});

report.on("error", function(event) {
    Log.log(event.detail);

    report.off("error");
});

report.off("saved");
report.on("saved", function(event) {
    Log.log(event.detail);
    if(event.detail.saveAs) {
        Log.logText('In order to interact with the new report, create a new token and load the new report');
     }
 });

dans le code ci-dessus, le powerbi montre que l'objet n'est pas trouvé dans mon code typecript : powerbi.embed(embedContainer, config) ;

J'ai essayé d'utiliser window['powerbi'] ou window.powerbi mais cela ne fonctionne pas. Quelle devrait être la solution alors ?

1voto

mft25 Points 367

J'ai été confronté à un problème similaire il y a quelques semaines (probablement exactement le même). Pour moi, il semble que ce qui fonctionne est d'utiliser window.powerbi.embed() pour l'action d'intégration, tandis que l'importation import * as powerbi from "powerbi-client"; est utilisé pour tous les autres objets Power BI.

1voto

lysdexic Points 448

J'ai eu le même problème, j'ai trouvé cette question en faisant une recherche sur Google. Je n'ai pas réussi à comprendre pourquoi il n'apparaissait pas dans la fenêtre, mais pour contourner le problème, vous pouvez l'initialiser vous-même comme ceci :

import * as pbi from "powerbi-client";

const powerbi = new pbi.service.Service(
            pbi.factories.hpmFactory,
            pbi.factories.wpmpFactory,
            pbi.factories.routerFactory
          );
const container = document.getElementById("report-container");
powerbi.embed(container, embedConfiguration);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X