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

Apollo 代码的编译演示

错误:TS2345:使用打字稿编译时

Typescript 编译错误:错误 TS1109:预期表达式

使用typescript(newb)导入外部模块时出现问题