繁体   English   中英

如何解决以下 typescript 错误:“找不到命名空间‘fastify’”?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM