Внедрение шлюза Apollo Federation с использованием Express Framework - PullRequest
0 голосов
/ 05 марта 2020

В настоящее время я работаю над ПО C для реализации шлюза Apollo Federation в приложении и NodeJS + express. До сих пор я не встречал ни одного примера, как правильно это сделать. До сих пор я сталкиваюсь с проблемой, когда модуль ApolloServer не распознает экземпляр ApolloGateway из @apollo/gateway. Я использую экземпляр ApolloServer в качестве оболочки экземпляра шлюза, как показано в руководстве: https://www.apollographql.com/docs/apollo-server/federation/implementing/#defining -the-gateway . Однако я столкнулся с проблемой при вызове server.applyMiddleWare() в моем приложении express. Я наткнулся на пример из https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-express#express

, который можно указать c Вот фрагмент журнала ошибок:

$ node --use_strict ./bin/www
/Users/evanlee/dev/federation-gateway/node_modules/loglevel-debug/index.js:32
    target[k] = attr.bind ? attr.bind(k) : attr;
              ^

TypeError: Cannot assign to read only property 'name' of function 'function() {
    return log.debug.apply(this, arguments);
  }'
    at /Users/evanlee/dev/federation-gateway/node_modules/loglevel-debug/index.js:32:15
    at Array.forEach (<anonymous>)
    at composit (/Users/evanlee/dev/federation-gateway/node_modules/loglevel-debug/index.js:30:20)
    at Object.loglevelDebug [as default] (/Users/evanlee/dev/federation-gateway/node_modules/loglevel-debug/index.js:201:3)
    at new ApolloGateway (/Users/evanlee/dev/federation-gateway/node_modules/@apollo/gateway/dist/index.js:101:33)
    at Object.<anonymous> (/Users/evanlee/dev/federation-gateway/app.js:21:12)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
error Command failed with exit code 1.

и вот как я Я пытаюсь интегрировать ApolloServer в мое приложение express:

const { ApolloServer } = require('apollo-server');
const { ApolloGateway } = require('@apollo/gateway');

const app = express();

// Apollo Server and Gateway definition
const server = new ApolloServer({
  gateway: new ApolloGateway({
    debug: true,
    serviceList: [
      { name: 'base-app', url: 'http://localhost:4001/graphql' },
    ]
  }),
  subscriptions: false,
});

server.applyMiddleware({ app, path: '/graphql' });

очень ценю помощь!

1 Ответ

0 голосов
/ 31 марта 2020

Это работает для меня, используя последние. Тем не менее, я не использую debug: true попробовать без?

...