gulp打字稿抛出错误TS2300:重复的标识符'时刻'

时间:2015-10-05 20:40:14

标签: typescript gulp yeoman momentjs tsd

我有一个使用Yeoman gulp打字稿生成器生成的Angular应用程序。

在构建打字稿期间突然没有任何明显的原因(项目中的更改)开始抛出错误:

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

请参阅以下文件的内容以供参考。 我删除了' tsd:install'来自gulp script任务,以防止覆盖d.ts文件和tsd.d.ts文件的构建。然后尝试修改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(gulp 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" />

3 个答案:

答案 0 :(得分:6)

如果您指向特定版本,如1.4.1而不是&#34; master&#34;对于参考: - 我认为它会为你修复它。它适合我。

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

答案 1 :(得分:1)

错误消息具有误导性。我相信这个原始错误的真正原因是使用当前版本不支持的TypeScript功能的类型定义文件。运行以下命令以获取最新版本的gulp-typescript,然后我认为一切都适合您,而不必将TSD文件限制为特定版本。将其限制为特定版本将有其自身的问题。

npm install gulp-typescript@2.9.2 --save-dev

答案 2 :(得分:0)

删除kendo all.d.ts然后在wwwroot中重建您的网站。这对我有用