TS newb 问题:编译错误启动 Apollo Server 试图解决承诺
Posted
技术标签:
【中文标题】TS newb 问题:编译错误启动 Apollo Server 试图解决承诺【英文标题】:TS newb question: compile error starting Apollo Server trying to resolve promise 【发布时间】:2021-10-24 05:15:31 【问题描述】:希望有人能提供帮助——我正在尝试在运行 Express 的 TypeScript 项目中启动 apollo 服务器。我的 app.ts 在下面。我收到以下错误:
Argument of type '(value: unknown) => void' is not assignable to parameter of type '() => void'.ts(2769)
我认为这与解决最后一个实际启动服务器的承诺有关。感谢您回答这个大概非常基本的问题!
import express from 'express';
import ApolloServer from 'apollo-server-express';
import depthLimit from 'graphql-depth-limit';
import compression from 'compression';
import cors from 'cors';
import schema from './schema';
const corsConfig =
origin: '*',
credentials: true
;
async function startApolloServer()
const server = new ApolloServer( schema, validationRules: [depthLimit(7)] );
await server.start();
const app = express();
app.use(cors(corsConfig));
app.use(compression());
server.applyMiddleware( app );
await new Promise(resolve => app.listen( port: 4000 , resolve));
console.log(`???? Server ready at http://localhost:4000$server.graphqlPath`);
【问题讨论】:
如果你删除validationRules /depthLimit,你会得到同样的错误吗? @AlexanderStaroselsky 感谢您的回复。是的 - 没有 graphql-depth-limit 包的相同错误。 VS Code 在承诺的最后用红色下划线了最后的“解决”声明。但我仍然不明白问题是什么。 好的,你可以试试 await new Promise(resolve => app.listen( port: 4000 , (value) => resolve())); 成功了 - 谢谢! 【参考方案1】:尝试以下方法来匹配预期的回调签名:
async function startApolloServer()
const server = new ApolloServer( schema, validationRules: [depthLimit(7)] );
await server.start();
const app = express();
app.use(cors(corsConfig));
app.use(compression());
server.applyMiddleware( app );
await new Promise(resolve => app.listen( port: 4000 , (value) => resolve(value)));
console.log(`? Server ready at http://localhost:4000$server.graphqlPath`);
希望对您有所帮助!
【讨论】:
以上是关于TS newb 问题:编译错误启动 Apollo Server 试图解决承诺的主要内容,如果未能解决你的问题,请参考以下文章
如何解决此 Apollo Control Cache 错误?
Angular Apollo 将 URI 注入 graphql.module.ts