使用apollo服务器express迁移到3.5.0



我正在尝试将我的一个项目的版本从节点12.x.x更新到节点14.x.x。现在我看到了apollo迁移到v3的文档,但根本不清楚有人知道从哪里开始?从头开始制作所有apollo零件系统会更容易吗?应更新的当前文件:

const { ApolloServer } = require('apollo-server-express');
const { makeExecutableSchema } = require('graphql-tools');
const { applyMiddleware } = require('graphql-middleware');
const { gql } = require('apollo-server-express');
const { resolvers, typeDefs } = require('graphql-scalars');
const { types } = require('./typedefs/types');
const { inputs } = require('./typedefs/inputs');
const { queries } = require('./typedefs/queries');
const { mutations } = require('./typedefs/mutations');
const customResolvers = require('./resolvers');
const { permissions } = require('./permissions/permissions');
const graphqlApis = gql`
${types}
${queries}
${inputs}
${mutations}
`;
const schema = makeExecutableSchema({
typeDefs: [...typeDefs, graphqlApis],
resolvers: {
...customResolvers,
...resolvers,
},
});
const server = new ApolloServer({
context: ({ req }) => {
const headers = req.headers || '';
return headers;
},
schema: applyMiddleware(schema, permissions),
});
module.exports = server;
尝试运行时的当前错误:Error: You must 'await server.start()' before calling 'server.applyMiddleware()'

我很想得到一些解决方案/帮助/见解。

如文档中所述,您需要用Async函数包围代码https://www.apollographql.com/docs/apollo-server/migration/

(async function () {
// ....
})();

或者这样:。。。定义你的类型Defs&解析器第一

const typeDefs = "" // your typedefs here
const resolvers = "" // your resolvers here
async function startApolloServer(typeDefs, resolvers) {
// Apollo Express 3.5.x code goes here
// ....
await server.start();
// promise resolve...
}
startApolloServer(typeDefs, resolvers)

最新更新