Typescript não consegue encontrar o módulo 'lunr'
Eu tenho um arquivo src/client/main.ts com este código :
import * as lunr from 'lunr';
console.log('main');
Eu instalei as tipagens dt para lunr typings install dt~lunr --save --globals
Meu arquivo tsconfig.json possui os seguintes seletores:
"filesGlob": [
"src/**/*.ts"
],
"files": [
"typings/index.d.ts"
]
Por que o compilador TypeScript não encontra o módulo lunr? O compilador sempre retorna erro TS2307: Cannot find module 'lunr'
Resposta #1
Depois de olhar os tipos do lunr, eu vi que ele definiu um namespace. https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html
Isso significa que não deve ser usado como uma importação, mas como um namespace no objeto global. Então meu arquivo main.ts se torna:
lunr(function() { console.log('do something with lunr') });
console.log('main');
e carregue a biblioteca lunr no seu arquivo HTML usando uma tag script antes de carregar seu próprio script.
Perdi quase 2 horas do meu tempo... Triste...
