[英]How to solve the following typescript error: "Cannot find namespace 'fastify'"?
我最近決定升級我的 fastify-server 模板上的所有包。
我的 package.json 看起來像這樣:
{
"name": "backend-template",
"version": "1.0.0",
"description": "",
"author": "",
"license": "ISC",
"main": "server.ts",
"scripts": {
"build": "tsc",
"test": "jest",
"start": "node dist/server.js",
"dev": "cross-env NODE_PATH=src nodemon",
"lint": "eslint src --ext .js,.ts --max-warnings 0"
},
"dependencies": {
"@types/pg": "^7.14.4",
"apollo-server-fastify": "^2.17.0",
"app-module-path": "^2.2.0",
"axios": "^0.20.0",
"bcrypt": "^5.0.0",
"bytebuffer": "^5.0.1",
"cls-hooked": "^4.2.2",
"cls-proxify": "^1.0.1",
"dataloader": "^2.0.0",
"dotenv": "^8.2.0",
"fastify": "^3.3.0",
"fastify-compress": "^3.3.0",
"fastify-cors": "^4.1.0",
"fastify-file-upload": "^3.0.0",
"fastify-gql": "^5.4.0",
"fastify-helmet": "^5.0.1",
"fastify-multipart": "^3.1.0",
"fastify-plugin": "^2.3.3",
"fastify-swagger": "^3.3.0",
"fluent-schema": "^1.0.4",
"graphql": "^15.3.0",
"graphql-type-datetime": "^0.2.4",
"graphql-upload": "^11.0.0",
"httperrors": "^2.3.0",
"jsonwebtoken": "^8.5.1",
"jwks-rsa": "^1.9.0",
"lodash": "^4.17.20",
"monotonic-id": "^1.1.0",
"mysql": "^2.18.1",
"mysql2": "^2.1.0",
"node-cache": "^5.1.2",
"pino": "^6.5.1",
"pino-pretty": "^4.2.0",
"sequelize": "^6.3.4",
"stream-buffers": "^3.0.2",
"stream-to-blob": "^2.0.1",
"uuid": "^8.3.0",
"uuid-parse": "^1.1.0",
"validator": "^13.1.1"
},
"devDependencies": {
"@types/axios": "^0.14.0",
"@types/jest": "^26.0.10",
"@types/validatorjs": "^3.15.0",
"@typescript-eslint/eslint-plugin": "^3.10.1",
"cross-env": "^7.0.2",
"eslint": "^7.7.0",
"eslint-config-airbnb-typescript": "^9.0.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-jest": "^23.20.0",
"eslint-plugin-prettier": "^3.1.4",
"husky": "^4.2.5",
"jest": "^26.4.2",
"lint-staged": "^10.2.13",
"nodemon": "^2.0.4",
"prettier": "^2.1.1",
"ts-jest": "^26.3.0",
"ts-node": "^9.0.0",
"typescript": "^4.0.2"
},
"lint-staged": {
"src/**/!(*test).{js,ts,json}": [
"prettier --write",
"eslint --max-warnings 0",
"git add"
]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
}
}
配置文件:
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": "src",
"resolveJsonModule": true
},
"lib": ["es2015"],
"include": ["src"]
}
但是當我運行npm run dev
我收到以下錯誤:
node_modules\ts-node\src\index.ts:500
return new TSError(diagnosticText, diagnosticCodes)
TSError:⨯ 無法編譯 TypeScript:src/app.ts:44:6 - 錯誤 TS2503:找不到命名空間“fastify”。
44 } 作為 fastify.ServerOptionsAsHttp); ~~~~~~~ src/app.ts:83:38 - 錯誤 TS2503:找不到命名空間“fastify”。
83(請求):CreateClsProxyFastify<fastify.FastifyRequest, fastify.FastifyReply<http.ServerResponse>> => ~~~~~~~ src/app.ts:83:62 - 錯誤 TS2503:找不到名稱空間“fastify”。
83(請求):CreateClsProxyFastify<fastify.FastifyRequest, fastify.FastifyReply<http.ServerResponse>> =>
節點版本:
v14.9.0
我能做什么?
我遇到了同樣的問題,對我來說,這是通過顯式導入類型解決的。
即代替
import fastify from 'fastify';
我用了
import { FastifyReply } from 'fastify';
我還使用FastifyReply
而不是FastifyReply<http.ServerResponse>
,因為http.ServerResponse
已經是默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.