Ich übersetze mein TypeScript mit "-m umd", weil mein Projekt Server, Client und gemeinsamen Code enthält. Der clientseitige Code funktioniert jedoch nicht im Browser. Der Browser zeigt nicht einmal einen Fehler an und der von mir gefundene Breakpoint traf nicht, also musste ich js-ts Mapping entfernen. Dann konnte ich es debuggen und ich fand das Problem.TypScript UMD sowohl 'Modul' als auch 'definieren' sind undefiniert
Es folgt der Code, der UMD erzeugt:
(function (factory) {
if (typeof module === 'object' && typeof module.exports === 'object') {
var v = factory(require, exports); if (v !== undefined) module.exports = v;
}
else if (typeof define === 'function' && define.amd) {
define(["require", "exports", "./model"], factory);
}
})(function (require, exports) {
//my code
});
Es funktioniert nicht, da beide ‚Modul‘ und ‚definieren‘ sind nicht definiert. Daher wird mein Code nicht ausgeführt und es gibt nicht einmal eine Ausnahme.
Was ist los? Wie könnte ich es zum Laufen bringen?
Sie müssen einen Modullader verwenden. –
@Tamas Hegedus wie SystemJS? Daher muss ich in diesem Fall keine UMD verwenden. Ich dachte, UMD sollte mir dieses Problem lösen. – Alon
UMD vereinheitlicht AMD und CommonJS-Module, so dass Sie diese Module mit beiden verwenden können. SystemJS vereinheitlicht auch AMD und CommonJS, so dass beide geladen werden können. Der einzige Weg, um das Problem zu lösen, ist die Verwendung von reinen es6-Modulen und die Bündelung mit Rollupjs. Ich weiß nicht, ob Typoskript hat ein Rollup wie Bundler in –