Как использовать локальные наборы TS пакета NPM для окружающего модуля (Handlebars)? - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь интегрировать npm i handlebars в свой существующий проект TS (v 3.4.5), но последовательно получаю TS2307: Cannot find module 'handlebars'..

Я использую Handlebars в нескольких различных модулях, распределенных по различнымфайлы.

В соответствии с этой объединенной функцией сопровождающие импортировали наборы из DefiniteTyped в репозиторий Handlebars и обесценили пакет @ types / handlebars .

Похоже, что TS не может определить тип репо и показывает ошибку TS2307.

Единственный способ получить чистую компиляцию - это вручную скопировать .d.ts файл из репозитория в самодельную папку @ types / handlebars.

В тот момент, пока я выполняю одно из следующих действий:

  • import Handlebars from "handlebars";
  • import * as Handlebars from "handlebars"
  • import "handlebars"

только в одном из файлов, которые используют Handlebars, я могу создать безошибочную сборку.

Мой tsconfig.json выглядит так:

{
  "compileOnSave": false,
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": true,
    "sourceMap": true,
    "module": "es6",
    "target": "es5"
  },
  "include": [
    "./Scripts/app/**/*",
  ],
  "exclude": [
    "node_modules",
  ]
}

Без ручного копирования файла .d.ts кажется, что ничего не работает.

Итак, у меня есть два вопроса:

  1. Какой правильный способ заставить Typescript распознавать этот окружающий модуль, который не требует ручного копирования / вставки?

  2. Почему TS требует оператора импорта только в одном из модулей, которые используют Handlebars?Разве это не требуется во всех модулях, которые ссылаются на него?

Спасибо.

1 Ответ

0 голосов
/ 03 мая 2019

На основе этой ссылки для документации TS:

Теперь мы можем /// node.d.ts и затем загрузить модули, используя import url = require ("URL ");или импортируйте * как URL из "url".

Кажется, что это единственный способ ссылаться на окружающий модуль, который не существует в каталоге @types.Оператор import не был необходим для его компиляции.

Для записи я также попытался обновить путь включения tsconfig.json для ссылки на .d.ts, но он был проигнорирован.

...