2016-02-13 76 views
10

我正在運行一個typescript構建並在node_modules中獲取錯誤。爲什麼它不忽略這個文件夾?我在我的tsconfig.json的排除部分。真奇怪的是,我有另一個項目,我已經做了文件比較,即使gulpfile.js,tsconfig.json和node_modules文件夾相同,它也不會拋出這些錯誤。我還能檢查什麼?Typescript構建從node_modules文件夾中獲取錯誤

錯誤:

c:/Dev/streak-maker/node_modules/angular2/src/core/change_detection/parser/locals.d.ts(3,14): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/change_detection/parser/locals.d.ts(4,42): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/debug/debug_node.d.ts(14,13): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/debug/debug_node.d.ts(24,17): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/debug/debug_node.d.ts(25,17): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/di/provider.d.ts(436,103): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/di/provider.d.ts(436,135): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/render/api.d.ts(13,13): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/core/render/api.d.ts(14,84): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(1,25): error TS2304: Cannot find name 'MapConstructor'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(2,25): error TS2304: Cannot find name 'SetConstructor'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(4,27): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(4,39): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(7,9): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(8,30): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(11,43): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(12,27): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(14,23): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(15,25): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(95,41): error TS2304: Cannot find name 'Set'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(96,22): error TS2304: Cannot find name 'Set'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/collection.d.ts(97,25): error TS2304: Cannot find name 'Set'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/lang.d.ts(13,17): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/lang.d.ts(14,17): error TS2304: Cannot find name 'Set'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/lang.d.ts(78,59): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(1,10): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(3,14): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(8,32): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(9,38): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(10,35): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(10,93): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(11,34): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(12,32): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(12,149): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/facade/promise.d.ts(13,43): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/angular2/src/http/headers.d.ts(43,59): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/http/url_search_params.d.ts(11,16): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/platform/browser/browser_adapter.d.ts(75,33): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/angular2/src/platform/dom/dom_adapter.d.ts(85,42): error TS2304: Cannot find name 'Map'. 
c:/Dev/streak-maker/node_modules/rxjs/CoreOperators.d.ts(22,67): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/CoreOperators.d.ts(72,67): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/CoreOperators.d.ts(77,31): error TS2304: Cannot find name 'PromiseConstructor'. 
c:/Dev/streak-maker/node_modules/rxjs/CoreOperators.d.ts(77,54): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(65,67): error TS2304: Cannot find name 'PromiseConstructor'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(65,88): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(72,84): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(77,38): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(100,66): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(154,66): error TS2304: Cannot find name 'Promise'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(159,31): error TS2304: Cannot find name 'PromiseConstructor'. 
c:/Dev/streak-maker/node_modules/rxjs/Observable.d.ts(159,54): error TS2304: Cannot find name 'Promise'. 

tsconfig.js

{ 
    "version": 3, 
    "compilerOptions": { 
    "target": "es5", 
    "module": "system", 
    "moduleResolution": "node", 
    "sourceMap": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false 
    }, 
    "exclude": [ 
    "node_modules", 
    "jspm_packages" 
    ] 
} 

gulpfile.js(我正在集結打字稿任務 - 我得到同樣的錯誤時,只要在命令行中輸入TSC)

/// <binding Build='default' /> 

var del = require('del'), 
    gulp = require("gulp"), 
    ts = require('gulp-typescript'), 
    watch = require('gulp-watch'); 

var webproj = "./src/StreakMaker.Web/"; 
var webroot = webproj + "wwwroot/"; 
var appsource = webproj + "App/"; 
var appout = webroot + "app/"; 
var jspmsource = "./jspm_packages/"; 
var jspmout = webroot + "jspm_packages/"; 

var paths = { 
    webroot: webroot, 
    src: appsource, 
    app: appout, 
    jspm: jspmsource, 
    jspm_out: jspmout 
}; 

gulp.task('watch', ['watch-typescript', 'watch-html']); 

gulp.task('watch-typescript', function(){ 
    gulp.watch(paths.src + '/**/*.ts', ['build-typescript']); 
}); 

gulp.task('clean-typescript', function() { 
    del([paths.app + '/**/*.ts']); 
}); 

gulp.task('build-typescript', ['clean-typescript'], function() { 
    var tsProject = ts.createProject('./tsconfig.json'); 

    gulp.src(paths.src + '/**/*.ts') 
     .pipe(ts(tsProject)) 
     .pipe(gulp.dest(paths.app)); 
}); 

gulp.task('watch-html', function() { 
    gulp.watch(paths.src + '/**/*.html', ['copy-html']); 
}); 

gulp.task('clean-html', function() { 
    del([paths.app + '/**/*.html']); 
}); 

gulp.task('copy-html', ['clean-html'], function() { 
    gulp.src(paths.src + '/**/*.html') 
     .pipe(gulp.dest(paths.app)); 
}); 

gulp.task('copy-jspm', ['clean-jspm', 'copy-config'], function() { 
    gulp.src(paths.jspm + "**/*.{js,css,map}") 
     .pipe(gulp.dest(paths.jspm_out)); 
}); 

gulp.task('clean-jspm', function(){ 
    del([paths.jspm_out + "**/*.*"]); 
}); 

gulp.task('copy-config', ['clean-config'], function(){ 
    gulp.src("./config.js") 
     .pipe(gulp.dest(paths.webroot)); 
}); 

gulp.task('clean-config', function(){ 
    del(paths.webroot + 'config.js'); 
}); 

gulp.task('default', ['build-typescript', 'copy-html', 'copy-jspm']); 

回答

29

我用這個掙扎也是如此。

添加以下到包含進口{}舉行的TS文件的頂部:

///<reference path="../node_modules/angular2/typings/browser.d.ts"/> 

你的路當然也可以針對文件的不同。然而

+1

完美的作品。 –

+2

這非常有用(+1),如果在[angular.io]上使用[quickstart](https://angular.io/docs/ts/latest/quickstart.html),則直接引用最高級別的類型也會起作用:'/// ' –

+2

無法與版本rc1一起工作 – jaumard

2

雖然這種解決方案

/// <reference path="../typings/browser.d.ts" /> 
import {bootstrap} from 'angular2/platform/browser'; 
import {AppComponent} from './app/main'; 

bootstrap(AppComponent); 

效果很好,德恩使用gulpjs我比較喜歡的,而不是填充源代碼文件的意見,一種加分型的文件直接到相應的gulpjs任務的來源,例如像:

gulp.task('typescript', function() { 
    return gulp 
    .src([ 
     'typings/browser.d.ts', 
     tsSrc + '**/*.ts' 
    ]) 
    .pipe(sourcemaps.init()) 
    .pipe(typescript(tscConfig.compilerOptions)) 
    .pipe(sourcemaps.write('.')) 
    .pipe(gulp.dest(appSrc + 'js/')); 
}); 
1

在RC1演示,墊片由core-js模塊和類型定義提供由typings工具進行管理。添加typings/index.d.tsgulp.src應該解決這個問題:

function buildTypeScriptFn(files) { 
    files = files || ['app/**/*.ts','typings/index.d.ts']; 

    return function() { 
    var tsResult = gulp.src(files) 
     .pipe(changed(paths.dirs.build, { extension: '.js' })) 
     .pipe(ts(tscConfig.compilerOptions)); 

    return merge(tsResult.dts, tsResult.js) 
     .pipe(gulp.dest(paths.dirs.build)); 
    } 
} 

gulp.task('ts', buildTypeScriptFn()); 
+0

謝謝你這工作 – meffect

1

我有同樣的問題,只是儘量不與運行「故宮開始」, 但「NPM運行精簡版」。它使用起來更方便。

+0

這工作對我來說。它將來會有什麼問題嗎? –

14

如果你的目標ES5,加上 「node_modules /打字稿/ lib目錄/ lib.es6.d.ts」 到tsconfig.json文件:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es5", 
     "noImplicitAny": false, 
     "outDir": "built", 
     "rootDir": ".", 
     "sourceMap": false 
    }, 
    "files": [ 
     "helloworld.ts", 
     "node_modules/typescript/lib/lib.es6.d.ts" 
    ], 
    "exclude": [ 
     "node_modules" 
    ] 
} 
+2

新手評論。在Visual Studio 2015中做到這一點讓我有了43k新的打字錯誤。 – bbsimonbb

+0

當一些模塊說他們找不到他們的依賴關係時,這對我有用。 –