Ich bekomme viele "falsche" Fehler, wenn meine gulp
Aufgabe mein Typoskript kompiliert. Hier ist der relevante gulp task
:TypeScript-Compiler in Gulp sagt, dass es nicht @angular Module finden kann, aber kompiliert
var tsProject = typescript.createProject('tsconfig.json', {noResolve: true});
gulp.task('build-ts', function() {
gulp.src(appDev + '**/*.ts')
.pipe(sourcemaps.init())
.pipe(typescript(tsProject))
.pipe(sourcemaps.write())
//.pipe(jsuglify())
.pipe(gulp.dest(appProd));
gulp.src(appDev + '**/*.+(html|css)')
.pipe(gulp.dest(appProd));
});
Und das sind die Fehler, die ich erhalten:
[09:38:52] Starting 'default'...
[09:38:52] Finished 'default' after 8.88 ms
ng/app.component.ts(1,27): error TS2307: Cannot find module '@angular/core'.
ng/app.component.ts(5,12): error TS2304: Cannot find name 'module'.
ng/app.module.ts(1,26): error TS2307: Cannot find module '@angular/core'.
ng/app.module.ts(2,31): error TS2307: Cannot find module '@angular/platform-browser'.
ng/app.module.ts(3,31): error TS2307: Cannot find module '@angular/common'.
[...]
[09:38:53] TypeScript: 27 semantic errors
[09:38:53] TypeScript: emit succeeded (with errors)
[BS] Proxying: http://0.0.0.0:5000
Mein Baumstruktur sieht wie folgt aus (vereinfacht):
.
├── gulpfile.js
├── ng
├── node_modules
├── package.json
├── tsconfig.json
├── typings.json
└── web
Alle Module, die das Typoskript Compiler nicht finden kann, sind tatsächlich in node_modules
und meine letzte Anwendung funktioniert trotz aller Fehler gut.
Das ist mein tsconfig.js
:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "./app"
},
"filesGlob": [
"./app/**/*.ts",
"!./node_modules/**/*.ts"
],
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
],
"atom": {
"rewriteTsconfig": true
}
}
Wie kann ich diese "falsch positiven" Fehler loszuwerden.
Ich denke, es gibt ein Problem mit den Dateien an die Typoskript-Kompilierung übergeben. Auf der einen Seite übergeben Sie Ihre 'appDev'-Dateien und setzen' noResolve'. Auf der anderen Seite haben Sie eine andere Konfiguration in Ihrer 'tsconfig'. (Achtung: Dateien und Exclude arbeiten nicht zusammen und auch Ihr tsconfig wird nicht von gulp umgeschrieben!) Wenn Sie Probleme mit der Auflösung von Typings haben, können Sie dem Aufruf des Typescript-Compilers das 'traceResolution'-Flag hinzufügen. Das sollte dir ein paar Hinweise geben. siehe https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Module%20Resolution.md#tracing-module-resolution. –
Sie sollten sich auch die Option 'noResolve' ansehen, die Sie übergeben. Dies führt dazu, dass keine Importe in Dateien folgen, die nicht an den TypeScript-Compiler übergeben werden. https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Module%20Resolution.md#using---noresolve. Ich würde vorschlagen, nicht "gulp.src", aber entweder von der "Tsproject" als Quelle der Wahrheit starten: https://github.com/ivogabe/gulp-typescript#using-tsconfigjson –