Kafa karıştırıcı "çift tanımlayıcı" Typescript hata mesajı
Neden buna ve bunun gibi birçok hataya maruz kalıyorum? Aşağıya repo linkini ve bazı önemli kod parçalarını ekliyorum. Bağımlılık ve "include" zincirlemesinin nasıl çalıştığı konusunda temel bir yanlış anlamam olduğunu düşünüyorum.
csvproc(master)> tsc
node_modules/typescript/bin/lib.core.d.ts(83,5): error TS2300: Duplicate identifier 'configurable'.
node_modules/typescript/bin/lib.core.d.ts(84,5): error TS2300: Duplicate identifier 'enumerable'.
node_modules/typescript/bin/lib.core.d.ts(85,5): error TS2300: Duplicate identifier 'value'.
node_modules/typescript/bin/lib.core.d.ts(86,5): error TS2300: Duplicate identifier 'writable'.
Tüm kodlar burada bulunabilir.
Benim tsconfig.json dosyam:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"outDir": "built/",
"sourceMap": true,
"target": "es5"
}
}
Benim tsd.json dosyam:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed": {
"node/node-0.10.d.ts": {
"commit": "6387999eb899d0ba02d37dd8697647718caca230"
},
"should/should.d.ts": {
"commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
}
}
}
Benim tsd.d.ts dosyam:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed": {
"node/node-0.10.d.ts": {
"commit": "6387999eb899d0ba02d37dd8697647718caca230"
},
"should/should.d.ts": {
"commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
}
}
}
Cevap #1
Bunun nedeni iki şeyin birleşimidir:
tsconfigherhangi birfilesbölümü içermiyor. Kaynak: http://www.typescriptlang.org/docs/handbook/tsconfig-json.htmlBir tsconfig.json dosyasında "files" özelliği yoksa, derleyici varsayılan olarak bulunan dizindeki ve alt dizinlerdeki tüm dosyaları dahil eder. Bir "files" özelliği belirtilirse, yalnızca o dosyalar dahil edilir.
npm bağımlılığı olarak
typescripteklemek:node_modules/typescript/Bu, tümtypescript'in dahil edildiği anlamına gelir .... her halükarda projenizde örtük olarak dahil edilmiş birlib.d.tsvardır (http://basarat.gitbook.io/typescript/content/docs/types/lib.d.ts.html) ve bu, npm sürümü ile birlikte gelentypescriptile çakışmaktadır.
Düzelt
Ya files listesini ya da include öğesini açıkça belirtin https://basarat.gitbook.io/typescript/project/compilation-context/files 🌹
Cevap #2
Güncelleme: Typings sürüm 1.0, çıktı yapısını değiştirdi ve aşağıdaki cevap 1.0 öncesi sürüme ilişkindir.
Eğer tsconfig.json dosyanızda Typings ve exclude kullanıyorsanız, çoğul tipler sorunuyla karşılaşabilir ve aşağıdakine benzer bir şeye ihtiyacınız olabilir:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
TypeScript ile entegrasyonu basitleştirmek için, projeye yüklenen tüm tip referanslarını içeren iki dosya - typings/main.d.ts ve typings/browser.d.ts - oluşturulur ve bunlardan yalnızca biri aynı anda kullanılabilir.
Dolayısıyla hangi sürüme ihtiyacınız olduğuna bağlı olarak, çoğaltmalara neden olan yer burası olduğundan, hem "browser" hem de "main" türündeki dosyaları değil, yalnızca birini hariç tutmalı (veya dahil etmelisiniz).
Bu Typings sorunu bunu daha fazla tartışıyor.
Cevap #3
Sorun basitçe çözüldü:
node_modulesklasörünü silmek- Tüm paketleri doğru sürümleriyle almak için
npm installkomutunu çalıştırmak
Benim durumumda, sorun Git dallarını değiştirdikten sonra meydana geldi; yeni bir dal farklı bir node modülleri seti kullanıyordu. Eski dal TypeScript v1.8 kullanıyordu, yenisi ise v2.0.
Cevap #4
Eğer typings klasörüne ayrı ayrı typings yüklediyseniz, bunu tsconfig.json dosyanıza ekleyin:
{
"exclude": [
"node_modules",
"typings"
]
}
Cevap #5
Ayrıca tsconfig.json dosyasında exclude seçeneğini şu şekilde kullanabilirsiniz:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
Cevap #6
tsconfig içinde skipLibCheck'i etkinleştirmek benim için bunu düzeltti.
{
"compilerOptions": {
"skipLibCheck": true /* Skip type checking all .d.ts files. */
},
"exclude": ["node_modules"],
"include": ["./src/**/*.ts"]
}
Cevap #7
Ben de tam olarak bu sorunla karşılaştım. npm start komutunu çalıştırdığımda, bir sürü yinelenen tanımlayıcı hatası aldım.
ÇÖZÜM:
Proje kök klasöründen çalıştırın:
rm -r typings
typings install
npm start
ve her şey yolunda çalışıyor.
