我正在尝试这种方法
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"
}
通过将其强制转换为“any”来修复
const app = express() as any;