2015-10-05 8 views
8

私はYeoman gulp typescript generatorを使用してAngularアプリケーションを生成しました。ビルドtypescriptです中の任意の明白な理由(プロジェクトの変更)せずに突然gulp typescript throwsエラーTS2300:重複した識別子 'moment'

はエラーを投げ始めた:

.tmp/typings/moment/moment-node.d.ts(6,16): error TS2300: Duplicate identifier 'moment'. 
[22:08:34] [TypeScript] TypeScript error: .tmp/typings/moment/moment-node.d.ts(6,16): error TS2300: Duplicate identifier 'moment'. 
.tmp/typings/moment/moment.d.ts(8,13): error TS2300: Duplicate identifier 'moment'. 

は、参考のために、以下のファイルの内容の下を参照してください。 ビルドがd.tsファイルとtsd.d.tsファイルを上書きしないように、gulp scriptタスクから 'tsd:install'を削除しました。次に、問題を修正するためにtsd.d.tsを修正しようとしました(私はモーメント・ノード、モーメント、変更順序を取り除こうとしましたが、moment.d.tsとmoment-node.d.tsを編集しようとしましたが、何も働かなかった) 。

マイtsd.jsonファイル:

{ 
    "version": "v4", 
    "repo": "borisyankov/DefinitelyTyped", 
    "ref": "master", 
    "path": ".tmp/typings", 
    "bundle": ".tmp/typings/tsd.d.ts" 
} 

マイscript.js(一気のtaks):

'use strict'; 

var path = require('path'); 
var gulp = require('gulp'); 
var conf = require('./conf'); 

var browserSync = require('browser-sync'); 

var $ = require('gulp-load-plugins')(); 

    var tsProject = $.typescript.createProject({ 
    target: 'es5', 
    sortOutput: true 
    }); 

    gulp.task('scripts', ['tsd:install'], function() { 
    return gulp.src(path.join(conf.paths.src, '/app/**/*.ts')) 
    .pipe($.sourcemaps.init()) 
    .pipe($.tslint()) 
    .pipe($.tslint.report('prose', { emitError: false })) 
    .pipe($.typescript(tsProject)).on('error', conf.errorHandler('TypeScript')) 
    .pipe($.concat('index.module.js')) 
    .pipe($.sourcemaps.write()) 
    .pipe(gulp.dest(path.join(conf.paths.tmp, '/serve/app'))) 
    .pipe(browserSync.reload({ stream: true })) 
    .pipe($.size()) 
}); 

生成tsd.d.ts:

/// <reference path="angular-local-storage/angular-local-storage.d.ts" /> 
/// <reference path="angular-ui-router/angular-ui-router.d.ts" /> 
/// <reference path="angularjs/angular-animate.d.ts" /> 
/// <reference path="angularjs/angular-cookies.d.ts" /> 
/// <reference path="angularjs/angular-mocks.d.ts" /> 
/// <reference path="angularjs/angular-resource.d.ts" /> 
/// <reference path="angularjs/angular-sanitize.d.ts" /> 
/// <reference path="angularjs/angular.d.ts" /> 
/// <reference path="bootstrap/bootstrap.d.ts" /> 
/// <reference path="d3/d3.d.ts" /> 
/// <reference path="jquery/jquery.d.ts" /> 
/// <reference path="moment/moment.d.ts" /> 
/// <reference path="moment/moment-node.d.ts" /> 
/// <reference path="toastr/toastr.d.ts" /> 

答えて

6

あなたが指している場合refの "master"の代わりに1.4.1のような特定のバージョンに変更してください: - あなたのために修正すると思います。それは私のために働く。

{ 
    "version": "v4", 
    "repo": "borisyankov/DefinitelyTyped", 
    "ref": "1.4.1", 
    "path": ".tmp/typings", 
    "bundle": ".tmp/typings/tsd.d.ts" 
} 
+0

'tsd.json'に明示的なバージョン' 1.4.1'を追加しました。良いタイミング:-) –

1

エラーメッセージは誤解を招くことがあります。私はこのorignalエラーの本当の理由は、現在のバージョンではサポートしていないTypeScript機能を使用している瞬間の型定義ファイルによるものだと考えています。以下を実行してgulp-typescriptの最新バージョンを入手してください。次に、TSDファイルを特定のリビジョンに制限することなく、すべてがうまくいくと思います。特定のリビジョンに制限することは、それ自身の問題を持ちます。

npm install [email protected] --save-dev 
0

delete kendo all.d.ts次にwwwrootであなたのウェブサイトを再構築します。これは私のために働きます

関連する問題