Sac*_*hin 5 express apollo-server next.js apollo-client express-graphql
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}`);
});
});Run Code Online (Sandbox Code Playgroud)
以下是使用nextjs将apollo-server-express与express框架连接的代码片段
在这里,我想使用apollo-server-express 2.0配置graphql。当我通过节点server.js使用此代码时,我收到以下错误消息,如,
“((节点:2904)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性'use'”
有人可以看看它,让我知道这里有什么问题。
文档中的示例是:
const app = express();
server.applyMiddleware({ app });
Run Code Online (Sandbox Code Playgroud)
这意味着您正在将对象传递给applyMiddleware。在示例中,我们传入的对象是使用速记属性名称表示法初始化的,该属性是ES2015引入的。以上等同于:
server.applyMiddleware({ app: app });
Run Code Online (Sandbox Code Playgroud)
我们的对象有一个名为app的属性,其值等于一个变量,恰好也称为app。如果您这样做:
const myApp = express()
server.applyMiddleware({ myApp });
Run Code Online (Sandbox Code Playgroud)
这意味着您要传入具有myApp属性的对象,更重要的是,缺少app该applyMiddleware函数期望的属性。所以...您的代码需要看起来像这样:
apoloSrv.applyMiddleware({ app: server});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |