我将hapi
用于我的node + typescript项目之一。由于不推荐使用“裸”包,因此我尝试将@hapi/hapi
更新为新的@types/hapi
包。我已将@types/hapi__hapi
更改为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.
。
更新后,我开始收到TypeScript错误-
{
...
"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"
},
...
}
这是我在package.json中的依赖项-
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
文件,因为它来自sourceCompatibility = 1.7
targetCompatibility = 1.7
软件包,但我想解决此问题。我有什么办法可以解决这个错误,例如降级到某些特定版本?
答案 0 :(得分:6)
我在@hapi/boom
处检查了问题,发现它们在7.x版本中包含破坏打字稿构建的类型。它们为removed types from 7.x releases,但为put them back in 8.x,并且由于我使用的是@hapi/boom 8.0.1
,因此它与现有类型冲突。
所有的hapi生态系统都将在其中包含类型定义,但其他软件包并未进行更新(据我所知),因此在不破坏TypeScript构建的前提下解决此问题的唯一方法是降级@hapi/boom
至7.4.11
。
PS:我在发布问题后几分钟发现了github问题,但如果有答案,我仍然愿意寻求更好的答案。