Pesquisa de site

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...

Artigos relacionados