【问题标题】:Serverless lambda doesn't work after updating apollo-server-lambda npm更新 apollo-server-lambda npm 后,无服务器 lambda 不起作用
【发布时间】:2019-08-27 09:45:40
【问题描述】:

目前我使用的是 apollo-server-lambda npm 版本 1.4.0。将 npm 更新到 2.4.8 版本后它不起作用。

这是我的无服务器 lambda 代码

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 不是函数

【问题讨论】:

    标签: node.js lambda apollo serverless apollo-server


    【解决方案1】:

    按照文档here 中的建议,您可以按照以下 3 个步骤升级到 v2.4.8,

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

    【讨论】:

    • 我希望主要错误(graphqlLambda 不是函数)已得到解决,并且您能够调用 GQL API。对于新的错误,您必须提供更具体的代码和堆栈跟踪。
    猜你喜欢
    • 2021-11-02
    • 2022-07-27
    • 2019-05-13
    • 2021-07-09
    • 2018-12-13
    • 2020-12-18
    • 2022-06-14
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多