ApolloServer.applyMiddleware ({express}) получает UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'использование неопределенного - PullRequest
0 голосов
/ 28 декабря 2018

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}`);
  });
});

Ниже приведен фрагмент кода для соединения apollo-server-express с платформой express с использованием nextjs

Здесь я хочу настроить graphql с помощью apollo-сервер-экспресс 2.0.Когда я использую этот код с помощью узла server.js, я получаю следующее сообщение об ошибке, например,

"(узел: 2904) UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'use' of undefined"

Может кто-нибудь взглянуть на это и дать мне знать, какие здесь проблемы.

1 Ответ

0 голосов
/ 28 декабря 2018

Пример в документации:

const app = express();
server.applyMiddleware({ app });

Это означает, что вы передаете объект в applyMiddleware.В этом примере объект, который мы передаем, инициализируется с использованием сокращенного обозначения имени свойства , которое было введено в ES2015.Вышеуказанное эквивалентно:

server.applyMiddleware({ app: app });

Наш объект имеет свойство с именем app, значение которого равно переменной, которая также называется app.Если вы сделали это:

const myApp = express()
server.applyMiddleware({ myApp });

Это означало бы, что вы передаете объект со свойством myApp и, что более важно, пропустили свойство app, ожидаемое функцией applyMiddleware.Итак ... ваш код должен выглядеть так:

apoloSrv.applyMiddleware({ app: server});
...