更新 apollo-server-lambda npm 后无服务器 lambda 不起作用
Serverless lambda doesn't work after updating apollo-server-lambda npm
目前我使用的是 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 不是函数
按照文档 here 中的建议,您可以按照以下 3 个步骤升级到 v2.4.8,
- 使用
ApolloServer
创建服务器
- 使用
createHandler
方法创建graphqlHandler
- 使用
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);
};
目前我使用的是 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 不是函数
按照文档 here 中的建议,您可以按照以下 3 个步骤升级到 v2.4.8,
- 使用
ApolloServer
创建服务器 - 使用
createHandler
方法创建graphqlHandler
- 使用
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);
};