问题描述
我最近决定升级我的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"
}
}
}
ts.config:
{
"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
> => ~~~~~~~ src / app.ts:83:62-错误TS2503:找不到命名空间“ fastify”。 83(请求):CreateClsProxyFastify
> =>
节点版本:
v14.9.0
我该怎么办?
解决方法
我遇到了同样的问题,对我来说,这是通过显式导入类型来解决的。
即代替
import falsify form 'falsify';
我用过
import { FalsifyReply } from 'falsify';
我还使用了FalsifyReply
而不是FalsifyReply<http.ServerResponse>
,因为http.ServerResponse
已经是默认设置。