2016-02-13 78 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

当一些模块说他们找不到他们的依赖关系时,这对我有用。 –