2016-06-25 17 views
4

Ich habe eine Datei src/client/main.ts mit diesem Code findenTyposkript kann nicht Modul 'lunr'

"filesGlob": [ 
    "src/**/*.ts" 
], 
"files": [ 
    "typings/index.d.ts" 
] 

Warum findet der Typskript-Compiler das Modul lunr nicht? Der Compiler gibt immer error TS2307: Cannot find module 'lunr'

+0

Welche Typoskript-Version verwenden Sie? Ich denke, dass filesGlob nur in nächtlichen Builds unterstützt wird. – Rem

+0

Tyescript 1.8.10. Ich habe ein paar andere Sachen ausprobiert. Zum Beispiel habe ich ein Schluck-Skript mit 'gulp-typescript' und ich habe' gulp.src (['typings/index.d.ts', 'src/client/main.ts']) versucht. Pipe (ts()) 'Aber ich habe den gleichen Fehler. – jobou

Antwort

0

aus Nach dem Betrachten der Typisierung für lun, sah ich, dass es eine namespace definiert. https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html

Es bedeutet, dass es nicht als Import, sondern als Namespace auf dem globalen Objekt verwendet werden sollte. Also meine main.ts Datei wird:

lunr(function() { console.log('do something with lunr') }); 

console.log('main'); 

und laden Sie die lunr Bibliothek in Ihrer HTML-Datei, die einen script-Tag, bevor Ihr eigenes Skript geladen werden.

Ich verlor fast 2 Stunden meiner Zeit ... Traurig ...

+1

Sie haben dies als Lösung gepostet, aber Sie haben nicht gezeigt, wie Sie Ihre 'lunr'-Entität in Ihre Komponente zur Verwendung importiert haben, was der Kernpunkt der Frage war. Sie fangen gerade an, ein undefiniertes 'lunr'-Objekt zu verwenden. –

+0

Ich dachte, es war klar. Laden Sie einfach das Skript in Ihr head-Tag, ohne einen Loader zu verwenden. Ich habe gerade meine Antwort bearbeitet. – jobou

+1

leider keine Option, wenn Sie es im reinen Knotenkontext verwenden wollen ... – Markus