Невозможно использовать пространство имен «Boom» как тип - PullRequest
3 голосов
/ 21 октября 2019

Я использую hapi для одного из моих проектов нода + машинопись. Я пытаюсь обновить hapi до нового пакета @hapi/hapi из-за устаревания "голых" пакетов. Я изменил @types/hapi на @types/hapi__hapi.

Как только я обновился, я начал получать ошибку TypeScript -

node_modules/@types/hapi__hapi/index.d.ts:514:32 - error TS2709: Cannot use namespace 'Boom' as a type.

514     response: ResponseObject | Boom;
                                   ~~~~

node_modules/@types/hapi__hapi/index.d.ts:4050:18 - error TS2709: Cannot use namespace 'Boom' as a type.

4050         (Error | Boom) |
                      ~~~~


Found 2 errors.

Вот зависимости, которые у меня есть в package.json -

{
...
"devDependencies": {
    ...
    "@types/hapi__boom": "7.4.1",
    "@types/hapi__hapi": "18.2.5",
    "@types/hapi__joi": "16.0.1",
    "@types/nock": "10.0.3",
    "@typescript-eslint/eslint-plugin": "2.4.0",
    "jest": "24.9.0",
    "nock": "11.4.0",
    "nodemon": "1.19.4",
    "prettier": "1.18.2",
    "typescript": "3.6.4"
  },
  "dependencies": {
    ...
    "@hapi/boom": "8.0.1",
    "@hapi/hapi": "18.4.0",
    "@hapi/joi": "16.1.7",
    "axios": "0.19.0",
    "axios-retry": "3.1.2"
  },
...
}

Я проверилnode_modules/@types/hapi__hapi/index.d.ts файл и он импортировал Boom, используя следующий способ -

import * as Boom from '@hapi/boom';

Когда я изменил его на

import { Boom } from '@hapi/boom';

, и он решил ошибку.

Я не могу изменить файл index.d.ts, так как он из пакета @types/hapi__hapi, но я хочу решить эту проблему. Могу ли я что-нибудь сделать, чтобы не было этой ошибки, например понижение версии до какой-то определенной версии?

1 Ответ

5 голосов
/ 21 октября 2019

Я проверил проблемы на @hapi/boom, и они включили типы в выпуск 7.x, которые ломали сборку машинописи. Они удалили типы из выпусков 7.x , но вернули их обратно в 8.x , и, поскольку я использовал @hapi/boom 8.0.1, это противоречило существующим типам.

Вся экосистема хапи будет включать в себя определения типов, но другие пакеты не обновляются для этого (насколько я могу судить), таким образом, единственный способ решить эту проблему, не нарушая сборок TypeScriptэто понизить @hapi/boom до 7.4.11.

PS: я обнаружил проблемы с github через несколько минут после публикации вопроса, но я все еще открыт для лучших ответов, если таковые имеются.

...