gulp машинопись выдает ошибку TS2300: повторяющийся идентификатор момент

У меня есть приложение Angular, сгенерированное с помощью генератора машинописного текста Yeoman.

Внезапно безо всякой видимой причины (изменения в проекте) во время сборки машинописи начались ошибки:

.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: установить" из gulp script задача предотвратить переопределение сборки файлов d.ts и файла tsd.d.ts. Затем попытался изменить tsd.d.ts для решения проблемы (я пытался удалить момент-узел, момент, порядок изменения, я также пытался редактировать момент.д.ц и момент-узел.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 ответа

Решение

Если вы указываете на конкретную версию, такую ​​как 1.4.1, а не "master" для ссылки: - Я думаю, это исправит это для вас. Это работает для меня.

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

Сообщение об ошибке вводит в заблуждение. Я полагаю, что настоящая причина ошибки оригинала связана с тем, что на данный момент файл определения типа использует функцию TypeScript, которую не поддерживает ваша текущая версия. Запустите следующее, чтобы получить последнюю версию gulp-typcript, и тогда я думаю, что все будет работать для вас, без необходимости ограничивать ваш файл TSD определенной ревизией. Ограничение конкретной редакции будет иметь свои проблемы.

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

Удалите kendo all.d.ts и перестройте свой сайт в wwwroot. это работает для меня

Другие вопросы по тегам