Execução dinâmica do TypeScript no navegador
Eu tenho o TypeScript que baixa assincronamente outro módulo TypeScript / javascript:
(function (exports) {
"use strict";
var path = require('path');
exports.convertData = function (data) {
return "converted " + data;
}
})(typeof exports === 'undefined' ? this['converter.someConverter'] = {} : exports);
Durante a execução do meu aplicativo principal, recebo este módulo como string e tenho que usar a funçãoconvertData de lá.
Então, estou tentando o seguinte:
eval(rendererScript);
console.log(exports.convertData("some data"));
Funciona bem apenas no caso devar path = require ('caminho'); será removido. Caso contrário, o seguinte erro:Erro não capturado (em promessa): o nome do módulo "caminho" ainda não foi carregado para o contexto: _. Use require ([])
Questões:
É bom usar eval () neste caso? (como sabemos que eval é mau)Como estar comrequire ('caminho')? Estou tentando usarRequireJS (http://requirejs.org/docs/node.html#2) mas recebendo o seguinte erro:Erro não capturado: erro de script para "caminho"Editado
Portanto, para evitar eval (), a seguinte solução foi encontrada:
const scriptTag = document.createElement("script");
scriptTag.innerHTML = rendererScript;
document.body.appendChild(scriptTag);
this.m_rendererPlugin = (window as any)[`converter.someConverter`];