2016-05-06 59 views
8

Typescript SystemJS ile eşleştirilmiş olan bir modül bulamıyor:typescript, <code>import ga from 'googleAnalytics';</code></p> <p><a href="https://github.com/systemjs/systemjs" rel="nofollow noreferrer">SystemJS</a> nerede modülü bulacağını bilir bu ithalat modülü bulamazsa

map: { 
    '@angular': 'node_modules/@angular', 
    'rxjs': 'node_modules/rxjs', 
    'underscore': 'node_modules/underscore/underscore-min.js', 
    'googleAnalytics': '//www.google-analytics.com/analytics.js' 
}, 

tsc ile benzer eşlemeyi nasıl sağlayabilirim? How to avoid imports with very long relative paths in Angular 2?

Typescript 2,0 tsconfig.json için paths yapılandırma destekler gibi görünüyor:

Bu, diğer bir soru iyi bir yöne işaret etmeye görünüyor. Typescript 2.0'ı indirmenin bir yolu var mı? path yapılandırmasını SystemJS ile yaptığım gibi bir http url (//www.google-analytics.com/analytics.js) verebilir miyim? Typescript 2.0 sürümünü indirmenin hiçbir yolu yoksa, mevcut sürümle istediğimi nasıl sağlayabilirim?

Düzenleme

alıyorum belirli bir hata şudur: " 'ga' modülünü bulunamıyor".

İşte benim tsconfig.json geçerli:

{ 
    "compilerOptions": { 
     "rootDir": "./", 
     "target": "es5", 
     "module": "system", 
     "moduleResolution": "node", 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "noImplicitAny": true 
    }, 
    "exclude": [ 
     "node_modules", 
     "front-end/node_modules", 
     "typings/main", 
     "typings/main.d.ts" 
    ] 
} 
+0

ı don Tipo 2'nin henüz yayınlandığını düşünmüyorum. https://github.com/Microsoft/TypeScript/tags – jasonszhao

+0

Gerçekten de serbest bırakılmış gibi görünmüyor. – maximedupre

+0

Bunu 'import {ga}' googleAnalytics '; – iberbeu

cevap

1

Eğer yazı tipi derleme transpilerının kesin tip dosyaları aradığını anlıyorsunuz. Dış modülün tip tanımını bilmesi gerekiyor. Aktif nodejs modül çözünürlüğüne sahipseniz (var) ve göreceli olmayan bir yol kullanırsanız (bunu yaparsanız) proje node_modules dizinine eklemeniz gerekir (belki zaten bir tane var) ve bu dizine googleAnalytics.d.ts ekleyin. dosya veya node_modules/googleAnalytics dizini oluşturabilir ve sonra index.d.ts ekleyebilirsiniz.google analytics için tanımı türleri DefintelyTyped repository indirilebilir

modül çözünürlüğü hakkında

fazla bilgi here

DÜZENLEME: Yorumunuzu göre belki google tanım dosyasına modul ihracat eklemek zorunda kalacak

declare module 'googleAnalytics' { 
    export = UniversalAnalytics; 
} 
+1

'node_modules' içinde el ile bir klasör oluşturmak çok kötü bir uygulamadır. Nadiren (hiç değilse) bu klasörü değiştirmelisiniz. The typescript derleyicisi ayrıca, [jasonszhao] 'nun önerdiği [büyük modül bildirimleri]' ni (https://www.typescriptlang.org/docs/handbook/modules.html#working-with-other-javascript-libraries) arar. Google Analytics türünün tanımı hiçbir şeyi dışa aktarmıyor gibi görünüyor. – maximedupre

+1

Mükemmel bilmiyordum. –

+0

Düzenlemenizin bir takibi olarak: haklısınız, ancak 'export = UniversalAnalytics' yerine 'export = ga' olacaktır. Şerefe! – maximedupre

1

Bu sorun Typescript Type Definitions etrafında çalışılabilir.

  1. Dizininizde türü tanımı koyun:

    tanımını kullanın. Premade olanlar DefinitelyTyped tarafından sağlanmaktadır.
  2. Google Analytics ithal etmek ts dosyasına bu satırı ekleyin:

    /// <reference path="ga.d.ts" /> 
    

Güncelleme Benim için çalışma yaptı

Ben tsc çalıştırdığınızda . Üzgünüm eklemeyi unutmuş:

    sizin import ler ve SystemJS eşlemenizde ga için
  1. Refactor. Bu derleyici yapmaz

o SystemJS dosyasını kontrol etmek gerektiğini biliyoruz, ancak hiçbir hata atılır böylece sadece, içe modülü için bir yer tutucu gibi davranır ve biz aslında çalışma zamanı sırasında modülü çözebilirsiniz SystemJS ile.

+0

Bunun işe yarayacağını düşünmedim, ama yine de denedim (ve işe yaramadı). Bu 'd.ts' dosyası,' googleAnalytics' modülünü bulmak için 'tsc''yi, SystemJs haritasına (ya da en azından aynı haritalamaya sahip) bakması gerektiğini söylemeye ne dersin? Belki de haritalamayı bilmesi gerekmiyor, ancak sadece bir 'd.ts' dosyasını buluyoruz, fakat' tsc' derleyicisinin 'googleAnalytics' gibi' 'ga.d.ts'' gibi özel bir modül adını nasıl bağlayacağını biliyoruz? – maximedupre

+0

@maximedupre Cevabımı güncelledim. – jasonszhao

+0

Hala çalışmıyor çünkü belki de "d.ts" bir modül bildirmiyor? https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/google.analytics/ga.d.ts – maximedupre