2015-10-05 20 views
8

Ho un'applicazione angolare generata utilizzando il generatore di dattilografia gulp di Yeoman.gulp dattiloscritto genera errore TS2300: identificatore duplicato 'momento'

improvvisamente senza alcun motivo apparente (variazione di progetto) durante la costruzione dattiloscritto iniziato errori da lancio:

.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'. 

vedere di seguito il contenuto dei file al di sotto del riferimento. Ho rimosso "tsd: install" dall'attività gulp script per impedire la generazione da sovrascrivere i file d.ts e tsd.d.ts. Poi ho provato a modificare tsd.d.ts per risolvere il problema (ho provato a rimuovere moment-node, moment, change order, ho anche provato a modificare moment.d.ts e moment-node.d.ts, niente ha funzionato: /) .

Il mio file tsd.json:

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

miei script.js (taks gulp):

'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 generato:

/// <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" /> 

risposta

6

Se si punta ad una versione specifica come 1.4.1 invece di "master" per il ref: - Penso che lo aggiusterà per te. Funziona per me.

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

Aggiungere la versione esplicita '1.4.1' in' tsd.json', ha funzionato. Buon tempismo :-) –

1

Il messaggio di errore è fuorviante. Credo che questo vero motivo per l'errore originale sia dovuto al file di definizione del tipo per il momento utilizzando una funzione TypeScript che la versione corrente non supporta. Esegui quanto segue per ottenere l'ultima versione di gulp-dattiloscritto e poi penso che tutto funzioni per te, senza dover limitare il file TSD ad una revisione specifica. Limitare a una revisione specifica avrà i suoi problemi.

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

eliminare kendo all.d.ts quindi ricostruire il sito Web in wwwroot. questo funziona per me

Problemi correlati