Visual personalizado: uso de promesas de JavaScript en Internet Explorer 11

Un usuario Pregunto ✅

blumi78

IE 11 todavía no es compatible con las funciones de ES2015 como Promesas.

Mi enfoque predeterminado aquí es usar una biblioteca Polyfill, incluirla en la sección «externalJS» de pbiviz.json y agregar «es2015» como lib a tsconfig.json.

Como resultado, el objeto visual personalizado se compila, pero el primer uso de una Promesa da como resultado un error:

new Promise((resolve, reject) => {
    resolve();
});

ERROR TypeError: Erlaubnis verweigert.
Die Eigenschaft «getOwnPropertyNames» eines undefinierten oder Nullverweises kann nicht abgerufen werden.
En inglés es probablemente

ERROR TypeError: Permiso denegado.
No se puede recuperar la propiedad «getOwnPropertyNames» de una referencia nula o no definida.

Sin embargo, cuando escribo en su lugar

new window["Promise"]((resolve, reject) => {
    resolve();
});

.. funciona como se esperaba.

¿Que esta pasando aqui?

v-viig

Este problema está relacionado con el hecho de que Power BI crea una copia del objeto de ventana para aislar el código PBI del código de Visual personalizado.

Tal solución puede producir problemas con algunos métodos nativos y produce problemas con la importación de bibliotecas externas.

Mientras tanto, estamos implementando herramientas PBIVIZ basadas en Webpack para admitir ES2015 y eliminar este problema mediante el aislamiento de código adicional. Ya puedes comprobarlo. Está disponible bajo la etiqueta beta en NPM.

Ignat Vilesov,

Ingeniero de software

Imágenes personalizadas de Microsoft Power BI

pbicvsupport@microsoft.com

blumi78

En respuesta a v-viig

Probé la versión beta (@ 2.0.1) del paquete powerbi-visuals-tools. Me da un «Error de sintaxis» en IE11 de inmediato con el visual de muestra que obtienes con «pbiviz new». Sin embargo, otros navegadores funcionan.

Si dices, es seguro usar la ventana[«Promise»], entonces puedo trabajar con eso.

v-viig

En respuesta a blumi78

Si, ventana[«Promise»] probablemente funcionará bien.

Ignat Vilesov,

Ingeniero de software

Imágenes personalizadas de Microsoft Power BI

pbicvsupport@microsoft.com

tpatel

En respuesta a v-viig

¿Me puede mostrar la función de cómo implementar?

blumi78

En respuesta a tpatel

Reemplazar todas las llamadas «Promesa» por la ventana «[‘Promise’]»

¿Que quieres saber exactamente?

tpatel

En respuesta a blumi78

¿Quieres decir en PowerBi.js reemplazar las llamadas de Promise?

blumi78

En respuesta a tpatel

En su código Visual personalizado, generalmente todos los archivos * .ts.

v-viig

En respuesta a blumi78

¿Ha resuelto los problemas?

Ignat Vilesov,

Ingeniero de software

Imágenes personalizadas de Microsoft Power BI

pbicvsupport@microsoft.com

tpatel

En respuesta a v-viig

todavía no. A continuación se muestra la función que tengo.

función Imprimir () {
var embedContainer = $ (‘# reportContainer’)[0];

// Obtenga una referencia al informe incrustado.
informe = powerbi.get (embedContainer);

// Active el cuadro de diálogo de impresión de su navegador.
report.print ()
.catch (función (errores) {
Console.log (errores);
});
}

v-viig

En respuesta a tpatel

¿Sigue recibiendo un error relacionado con Promise?

Ignat Vilesov,

Ingeniero de software

Elementos visuales personalizados de Microsoft Power BI

pbicvsupport@microsoft.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *