如何解决以下打字错误:“找不到命名空间'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"
        }
    }
}

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已经是默认设置。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...