2016-07-01 6 views
9

Unser Projekt verwendet die Option webpack resolve.root, um Module mit absoluten Pfaden zu importieren. (Vermeidung von etwas wie ../../../module)
In seinem aktuellen Zustand verwendet das Projekt babel-loader, die perfekt funktioniert.
Meine Aufgabe ist es, die App auf Angular 2 zu migrieren.
Daher bin ich gerade dabei, in TypeScript überzugehen.
Irgendwie scheint es, als ob die ts-loader nicht in Kombination mit der resolve.root Option der Webpack-Konfiguration funktioniert.Webpack resolve.root und TypeScript loader

Beispiel des webpack.config.js

resolve: { 
    root: [ 
     path.resolve('./node_modules'), 
     path.resolve('./app'), 
     path.resolve('./app/lib'), 
    ] 
}, 

Beispiel eines Moduls import
import AbstractListState from 'states/abstract_list_state';

states Das Verzeichnis ist im Inneren des app/lib Verzeichnis.

Fehler beim webpack

ERROR in ./app/mainViews/panel/panel.controller.ts 
Module not found: Error: Cannot resolve module 'states/abstract_list_state' in C:\Users\...\Project\app\mainViews\panel 
@ ./app/mainViews/panel/panel.controller.ts 4:28-65 
+2

See: https://github.com/ Microsoft/TypeScript/Probleme/5039. Eine Möglichkeit, dies mit der 'tsconfig.json' Datei zu tun, wird in TypeScript 2 implementiert. Offenbar kann man es heute schon mit' typescript @ next' testen. – Blackus

Antwort

2

Pre Version 2.0 Typoskript Ausführung wird versuchen, Module mit einem absoluten Pfad von dem node_modules Verzeichnis zu laden. Dies liegt daran, dass TypeScripts Modulresultat standardmäßig auf "node" gesetzt ist. Dies bedeutet, dass es wie die require-Methode des Knotens funktioniert. Auch wenn Sie webpack zum Erstellen Ihrer App verwenden, möchte TypeScript (und sein Compiler) dennoch die Dateien laden.

Damit das Webpack Ihre Module mit dem absoluten Pfad importieren kann, müssen Sie zurückgehen und die Methode verwenden. Auf diese Weise lässt TypeScript das Webpack importieren. Aber natürlich werden Sie nicht jede Art-Inferenz, die automatische Vervollständigung erhalten, ...

Oder aktualisieren Sie die Mitschrift 2.0 beta und geben diesem einen Versuch: https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#module-resolution-enhancements-baseurl-path-mapping-rootdirs-and-tracing