2016-12-01 2 views
1

Ich versuche, in den Griff zu bekommen mit der Verwendung von Typoskript 2, Webpack und Angular 1.5, aber beim Bau Webpack hält beschweren, dass es:Überzeugungs webpack verwenden node_modules/@ Typen

nicht Modul lösen können ‚@ Typen/Winkel 'in C: \ play \ gt \ src

Ich bin ratlos. Ich habe das gegoogelt und herumgespielt, bin aber nirgendwohin gekommen.

Mein app.ts wie folgt aussieht:

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "target": "es5", 
    "sourceMap": true, 
    "typeRoots" : [ 
     "node_modules/@types" 
     ] 
    }, 
    "exclude": [ 
    "node_modules", 
    "**/*.spec.ts" 
    ], 
    "include" : [ 
    "src/**/*" 
    ] 
} 

... und schließlich webpack config::

module.exports = { 
     entry: './src/app.ts', 
     output: { 
      filename: './dist/app.js' 
     }, 
     devtool: "source-map", 
     resolve: { 
      extensions: ['', '.webpack.js', '.web.js', '.ts', '.js'], 
      modulesDirectories: ["node_modules"] 
     }, 
     module: { 
      loaders: [ 
       { test: /\.ts$/, loader: 'ts-loader' } 
      ] 
     } 
    } 

Antwort

1

@types Sie sind nicht Module

import * as angular from "@types/angular"; 
let app = angular.module ("GT.module", []); 

Meine TSconfig aussieht importieren können, sind sie typedefs, auf die der Compiler verweist.

Das @types/angular Paket implementiert nicht wirklich .module und Ihr Code wird brechen (wenn es jemals kompiliert wird).

Sie wollen wahrscheinlich etwas mehr tun:

/// <reference path="../node_modules/@types/angular/index.d.ts" /> 
import * as angular from "angular"; 
let app = angular.module ("GT.module", []); 

Aber, Sie werden in der Regel nicht einmal die reference benötigen, wie der Compiler automatisch wird typedefs von @types/* Pakete enthalten, wenn Sie es sagen, nicht zu (indem Sie types oder typeRoot in Ihrem tsconfig.json setzen). Dieses Verhalten wurde in Version 2 hinzugefügt und ist relativ neu.

2

Wie sieht Ihr Verzeichnisbaum aus? Es sollte wie folgt aussehen:

node_modules/ 
    @types/ 
     angular/ 
src/ 
tsconfig.json 
webpack.config.js 

dann nicht "typeRoots" : ["node_modules/@types"] Sie brauchen

und import * as angular from "@types/angular"; wurde sollte import * as angular from "angular";

Typoskript Compiler 2.0 wird wissen, wo die Typisierungen auf der rechten Seite zu sehen finden Orte (dh: in node_modules/@types)

+0

Vielen Dank! Das hat es gelöst. Die Typoskript-Zieleinträge scheinen sich in Bewegung zu halten und es ist sehr schwierig, aktuelle Artikel zu finden. – jeffeld

+0

Ja, ich weiß, Javascript-Ökosystem entwickelt sich ziemlich schnell, versuchen Sie die offizielle Dokumentation, es ist ziemlich gut gepflegt. Zum Beispiel wird dieser Link Webpack mit Typoskript einpacken: https://www.typescriptlang.org/docs/handbook/react-&-webpack.html –

Verwandte Themen