Wie auf TypeScript-Dateien ohne ausführen in 'verlangen, ist nicht definiert" - Fehler
Werde ich Vorwort, indem Sie sagen: ich habe keine fortgeschrittene Kenntnisse in Schriftlicher oder JavaScript.
, Was ich Tat
Mache ich ein Barebone-Typoskript "die Algorithmische Spielzeug-box", die algorithmen von Grundlagen der Algorithmik (Brassard und Bratley). Was ich tun müssen, ist öffnen einer lokalen HTML-Datei und die transpiled Typoskript ändert den DOM, um die Ausgabe (ebenso wie die Greeter-Beispiel auf dem Typoskript-Webseite).
Alles lief gut, bis ich beschloss, verwenden Sie separate Dateien für jede Klasse. Ich verwendet eine der vielen Möglichkeiten zur Verfügung, um die Referenz-Typoskript-Dateien, aber ich bin mir nicht sicher, ob es war am besten geeignet. Ich habe auch ein Standard - tsconfig.json
Datei mit dem Atom Typoskript plugin zu denken, dass der compiler würde nun davon ausgehen, alle .ts
im Verzeichnis sind die gleichen Modul oder so etwas, aber ich denke, das war nicht der Fall.
main.ts:
import { Monticulo } from "./stuff/monticulo.ts"
import { ProgDin } from "./programacion-dinamica.ts"
let arr5_13 = [1,6,9,2,7,5,2,7,4,10]
let mon1 = new Monticulo(arr5_13)
//...
document.body.innerHTML = mon1.console_debug
Das problem
Wenn ich öffnen Sie die HTML-Datei in einem browser, die Konsole sagt Uncaught ReferenceError: require is not defined
.
Sicher genug, die transpiled code require () - Aufruf:
main.js:
var monticulo_ts_1 = require("./stuff/monticulo.ts");
var arr5_13 = [1, 6, 9, 2, 7, 5, 2, 7, 4, 10];
//...
document.body.innerHTML = mon1.console_debug;
, Was ich versucht habe
Ich zunächst lief es auf Firefox 47.0, dann habe ich versucht, läuft in Chrom 51.0 (im Fall war es browser-bezogen), aber ich habe den gleichen Fehler. Ich bin auf Ubuntu 16.04 der Vollständigkeit halber.
Ich habe gelesen, , dass require() ist eine Funktion, die nicht implementiert client-Seite, noch Knoten hat es umgesetzt und es ist notwendig für die Verwendung von npm-Module im browser, aber warum sollte Typoskript anrufen müssen alle npm-Modul? Warum nicht main.js nur Verweis auf die transpiled .js
statt der .ts
selbst? Ich bin mir ziemlich sicher, dass ich ' m fehlen ein oder mehrere Stücke von Informationen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich kompilieren nach unten, um die commonJS-Modul-format (überprüfen Sie Ihre tsconfig.json)
Das heißt, es erzeugt erfordern Funktionsaufrufe für Sie und es ist Ihre Verantwortung, um einen commonjs-loader. Sie wahrscheinlich auch wollen, bündeln Sie alle Ihre Dateien in eine. Es passiert einfach so, dass webpack hat beide und ist sehr oft zusammen mit Typoskript 🙂
Können Sie entfernen die Notwendigkeit erfordern, durch den Austausch
mit
Sehen Triple Slashes für weitere Informationen über die Verwendung der dreifach-Schrägstrich-Importe.
Möchten Sie auch entfernen Sie alle
export class
und ersetzen mit nurpublic class
.export
- Anweisung.