无法将中间件应用到apollo服务器

问题描述 投票:0回答:1

我正在尝试这种方法

import express, { Application } from 'express';
import { ApolloServer } from 'apollo-server-express';
import { buildSchema } from 'type-graphql';
    async function startServer() {
    const app: Application = express(); //trying to cast  it into Applicaton  because  of another error
    await connectDatabase();
    
    
        const apolloServer = new ApolloServer({
          schema: await buildSchema({
            resolvers: [UserResolver],
            authChecker,
          }),
          context: ({ req }) => {
            const headers = req.headers;
            return { headers };
          },
        });
    
    
        await apolloServer.start();
    
        apolloServer.applyMiddleware({ app });
    
        app.listen(4000, () => {
          console.log('Server started on http://localhost:4000/graphql');
        });
      }
    
    
    }

但它说: 类型

'导入(“node_modules/@types/express/index”).Application' 不可分配给类型 '导入(“node_modules/apollo-server-express/node_modules/@types/express/index”)。应用程序'。 属性“get”的类型不兼容。 ApolloServer.d.ts(15, 5):预期类型来自属性“app”,该属性在“ServerRegistration”类型上声明

在以前的项目中没有任何错误,该项目使用相同的依赖项,甚至没有将其转换为应用程序 但是当我尝试 npm update 时,我在两个项目中都遇到了问题

package.json:

"dependencies": {
    "@typegoose/typegoose": "^12.0.0",
    "apollo-server-express": "^3.13.0",
    "bcrypt": "^5.1.1",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.1",
    "dotenv": "^16.3.1",
    "express": "^4.18.2",
    "express-jwt-authz": "^2.4.1",
    "express-oauth2-jwt-bearer": "^1.6.0",
    "graphql": "^15.8.0",
    "jsonwebtoken": "^9.0.2",
    "jwks-rsa": "^3.1.0",
    "jwt-decode": "^4.0.0",
    "mongoose": "^8.0.4",
    "nodemailer": "^6.9.8",
    "reflect-metadata": "^0.2.1",
    "type-graphql": "^1.1.1"
  },
  "devDependencies": {
    "@types/bcrypt": "^5.0.2",
    "@types/jsonwebtoken": "^9.0.5",
    "@types/nodemailer": "^6.4.14",
    "typescript": "^5.3.3"
  }
node.js typescript express apollo-server
1个回答
0
投票

通过将其强制转换为“any”来修复

const app = express() as any;
© www.soinside.com 2019 - 2024. All rights reserved.