const { ApolloServer, gql } = require('apollo-server-express')
const express = require("express");
const next = require("next");
const dev = process.env.NODE_ENV === "development";
const app = next({ dev });
const handle = app.getRequestHandler();
app.prepare().then(() => {
const apoloSrv = new ApolloServer({ typeDefs, resolvers });
const server = express();
apoloSrv.applyMiddleware({ server});
server.get("*", (req, res) => handle(req, res));
const PORT = process.env.PORT || 4000;
server.listen(PORT, err => {
if (err) throw err;
console.log(`Ready on :${PORT}`);
});
});
下面是使用nextjs与express框架进行apollo-server-express连接的代码片段。
在这里,我想使用apollo-server-express 2.0配置graphql。当我使用节点server.js使用这段代码时,我得到了如下的错误消息:
“(节点:2904) UnhandledPromiseRejectionWarning: TypeError:无法读取未定义的属性'use‘”
有没有人可以看一下,让我知道这里有什么问题。
发布于 2018-12-28 14:27:48
文档中的示例如下:
const app = express();
server.applyMiddleware({ app });
这意味着您正在将一个对象传递给applyMiddleware
。在本例中,我们传入的对象是使用ES2015引入的shorthand property name notation进行初始化的。上面的代码相当于:
server.applyMiddleware({ app: app });
我们的对象有一个名为app的属性,它的值等于一个恰好也被称为app的变量。如果你这样做了:
const myApp = express()
server.applyMiddleware({ myApp });
这意味着您传入的是一个具有myApp
属性的对象,更重要的是,它缺少applyMiddleware
函数所需的app
属性。所以..。您的代码需要如下所示:
apoloSrv.applyMiddleware({ app: server});
发布于 2020-06-03 18:02:42
const express = require("express");
const router = express.Router();
const { ApolloServer, gql } = require('apollo-server-express');
const server = new ApolloServer({
schema: schema,
introspection: true
});
server.applyMiddleware({ app:router });
module.exports = router;
https://stackoverflow.com/questions/53954517
复制