2016-01-06 7 views
5
nicht gefunden

Ich arbeite mit der aurelia-typescript-skeleton als Basis für mein neues Projekt. Ich habe versucht, wie untenFehler beim Verweisen auf meine TypeScript-Module TS2307: Modul

import {Hello} from './hello'; 

export class Users { 
    constructor() { 
    console.log(new Hello().sayHello('Test')); 
    } 
} 

Beide Dateien

export class Hello { 
    sayHello(name:string) : string { 
    return 'Hello ' + name; 
    } 
} 

und verwiesen sie in einer anderen Datei im selben Ordner eine neue Datei hello.ts in src Ordner Hinzufügen in der gleichen Ordnerebene sind. Alles funktioniert gut, wenn ich zum ersten Mal baue. Wenn ich nachträgliche Änderungen an der Datei users.ts mache, bleibt die Kompilierung gulp-typescript mit einem Fehler, den ich nicht verstehen kann, fehlerfrei. Der Fehler aus dem Typoskript Compiler ist

> Starting 'build-system'... 
> src\users.ts(4,21): error TS2307: Cannot find module 'hello'. 
> TypeScript: 1 semantic error 
> TypeScript: emit succeeded (with errors) 
> Finished 'build-system' after 950 ms 

Immer, wenn ich eine frische gulp watch tun, gibt es keine Fehler. Der Fehler erscheint, wenn ich die users.ts Datei bearbeite/ändere. Kann mir jemand helfen, diesen Fehler zu verstehen? Es muss etwas Grundlegendes sein ...

Ich bin auf Windows 7 Umgebung, und ich bekomme diesen Fehler auf 2 Maschinen.

UPDATE:

Hier ist die repo to reproduce the problem. Schritte zum Reproduzieren:

  1. Clone der Repo, alle npm und jspm Abhängigkeiten installieren.
  2. Führen Sie gulp watch -> keine Fehler für mich
  3. Ändern Sie users.ts Datei und speichern -> der Fehler auftritt.

UPDATE2:

Hinzufügen eines clean Schritt vor build-system das Problem zu vermeiden hilft. Hier ist the link to commit. Ich bin mir immer noch nicht sicher über den tatsächlichen Grund des Problems aus erster Hand.

+0

Bitte fügen Sie die Fehlermeldung von Schluck auch. –

+0

@MartinVseticka Siehe die Konsolenausgabe in der Frage - das ist, was ich von der Schluckaufgabe – Mikhail

+0

bekomme Ich habe versucht, das Repo herunterzuladen und es zu installieren [ubuntu 15.10]. Das Build-Skript scheint für mich zu funktionieren. Ich musste nur '/aurelia-typescript-skeleton/jspm_packages/github/aurelia/[email protected] ersetzen.1/aurelia-fetch-client.d.ts' (es enthielt Fehler) mit einigen Fixes: https://pastee.org/v5ghs Meine 'gulp watch' Ausgabe: https://pastee.org/pzskc –

Antwort

0

Es ist, weil nur users.ts, die geänderte Datei, auf nachfolgende TS Kompilation gesendet wird, während noResolve aktiviert ist (in tsconfig.json).

Bitte siehe Datei build/tasks/build.js, Aufgabe 'build-system':

.pipe(changed(paths.output, {extension: '.js'})) 

, welche Dateien geändert werden, werden bestimmt (durch gulp-changed) durch mit dem Ziel Zeitpunkt der letzten Änderung der Eingabedateien zu vergleichen. Wenn Sie also clean oder watch ausführen, die clean betreffen, wird das Ziel bereinigt und alle Dateien werden erneut zur Kompilierung gesendet, also kein Fehler.

Als ich die aktualisierte Skelett-App (1.0.0-beta.1.2.2) versuchte, wurde dieses Problem behoben.

+0

Also, ist der Compiler nicht in der Lage, nur eine Datei zu kompilieren? (und schlau zu sein, Abhängigkeiten aufzulösen) Warum hat es auf Ubuntu funktioniert? – Mikhail

+0

TS hat tatsächlich die Kompilierzeit [Modulauflösung] (https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Module%20Resolution.md). Da noResolve aktiviert ist, werden die aufgelösten Dateien NICHT automatisch in die Kompilierung einbezogen. – qtuan