После обновления apollo-server-lambda npm серверная лямбда не работает - PullRequest
0 голосов
/ 05 апреля 2019

В настоящее время я использую apollo-server-lambda npm версии 1.4.0. После обновления npm до версии 2.4.8 он не работает.

Вот мой безсерверный лямбда-код

var {graphqlLambda} = require("apollo-server-lambda");
var {makeExecutableSchema} = require('graphql-tools');
var {schema} = require('./schema');
var {resolvers} = require('./resolvers');
const vandium = require('vandium' );
const myGraphQLSchema = makeExecutableSchema({
typeDefs: schema, resolvers,
logger: console,
});
module.exports.graphqlHandler = (event, context, callback) => {  
context.callbackWaitsForEmptyEventLoop = false;
function callbackFilter(error, output) {
  output.headers['Access-Control-Allow-Origin'] = '*';
  callback(error, output);
}
  const handler = graphqlLambda({ schema: myGraphQLSchema });
  return handler(event, context, callbackFilter);   
};

выдает ошибку: Ошибка: graphqlLambda не является функцией

1 Ответ

0 голосов
/ 05 апреля 2019

Как указано в документе здесь , вы можете перейти на v2.4.8, выполнив следующие 3 шага,

  1. используйте ApolloServer для создания сервера
  2. используйте createHandler метод для создания graphqlHandler
  3. используйте graphqlHandler для обработки запроса.

Вы можете обратиться ниже код,

const { ApolloServer } = require('apollo-server-lambda');

//1
const server = new ApolloServer({
  typeDefs,
  resolvers
});
//2
const graphqlHandler = server.createHandler();

module.exports.graphqlHandler = (event, context, callback) => {
  context.callbackWaitsForEmptyEventLoop = false;
  function callbackFilter(error, output) {
    output.headers['Access-Control-Allow-Origin'] = '*';
    callback(error, output);
  }
//3
  graphqlHandler(event, context, callbackFilter);
};
...