Typescript не может найти модуль «lunr»

У меня есть файл src/client/main.ts с этим кодом:

import * as lunr from 'lunr';

console.log('main');

Я установил типизацию dt для lunr typings install dt~lunr --save --globals

В моем файле tsconfig.json есть следующие селекторы:

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

Почему компилятор машинописного текста не находит модуль lunr? Компилятор всегда выводит error TS2307: Cannot find module 'lunr'


person jobou    schedule 25.06.2016    source источник
comment
Какую версию машинописного текста вы используете? Я думаю, что filesGlob поддерживается только в ночных сборках.   -  person Rem    schedule 26.06.2016
comment
Тайскрипт 1.8.10. Я пробовал кучу других вещей. Например, у меня есть скрипт gulp с gulp-typescript, и я пробовал gulp.src(['typings/index.d.ts', 'src/client/main.ts']).pipe(ts()), но у меня та же ошибка.   -  person jobou    schedule 26.06.2016


Ответы (1)


Посмотрев на типизацию для lunr, я увидел, что он определяет namespace. https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html

Это означает, что его следует использовать не как импорт, а как пространство имен для глобального объекта. Итак, мой файл main.ts становится:

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

console.log('main');

и загрузите библиотеку lunr в свой html-файл, используя тег script перед загрузкой собственного скрипта.

Потерял почти 2 часа своего времени... Грустно...

person jobou    schedule 25.06.2016
comment
Вы опубликовали это как решение, но не показали, как вы импортировали свой объект «lunr» в свой компонент для использования, в чем и был весь смысл вопроса. Вы просто начинаете использовать неопределенный объект 'lunr'. - person Paul Gorbas; 09.07.2016
comment
Я думал, что это ясно. Просто загрузите скрипт в свой тег head без использования загрузчика. Я только что отредактировал свой ответ. - person jobou; 10.07.2016
comment
к сожалению, это не вариант, если вы хотите использовать его в чистом контексте узла... - person Markus; 12.12.2016