У меня есть служба Node Apollo Gateway, работающая на AWS Lambda, она делегирует две разные службы GraphQL, все это отлично работает локально на моем Ma c.
Однако при работе на AWS Lambda, шлюз выдает мне эту ошибку при достижении конечной точки (ожидая увидеть игровую площадку)
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'content-type' of undefined",
"trace": [
"TypeError: Cannot read property 'content-type' of undefined",
" at fileUploadHandler (/var/task/node_modules/apollo-server-lambda/dist/ApolloServer.js:143:50)",
" at Runtime.handler (/var/task/node_modules/apollo-server-lambda/dist/ApolloServer.js:166:13)",
" at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
]
}
Я ничего не делаю с закачкой, а смотрю на ApolloServer. js, я можно увидеть, что обработчик создан.
Мой index.js
выглядит так:
const isLambda = !!process.env.LAMBDA_TASK_ROOT;
const { ApolloServer, gql } = isLambda ? require('apollo-server-lambda') : require('apollo-server');
const { ApolloGateway, RemoteGraphQLDataSource } = require("@apollo/gateway");
const gateway = new ApolloGateway({
serviceList: [
{ name: 'service1', url: !isLambda ? 'http://127.0.0.1:5090' : 'https://api.blah.com/search' },
{ name: 'service2', url: !isLambda ? 'http://127.0.0.1:5110' : 'https://api.elsewhere.com/other' },
],
});
const server = new ApolloServer({
gateway,
subscriptions: false,
uploads: false,
context: ({ event, context }) => ({
headers: event.headers,
functionName: context.functionName,
event,
context,
}),
playground: true,
introspection: true,
});
if (!isLambda) {
server.listen().then(({ url }) => {
console.log(`? Server ready at ${url}`);
});
} else {
exports.graphql = server.createHandler({
cors: {
origin: '*',
credentials: true,
},
});
}
Модули NPM, которые я использую с этим:
npm install @apollo/gateway apollo-server-lambda graphql
Любые указания на то, что здесь может быть не так?
Обновление 25 мая 2020 г. Похоже, это связано с тем, выбираю ли я между HTTP или REST в AWS шлюзе, HTTP получает меня после этой ошибки, но я понятия не имею, что мне нужно сделать, чтобы она работала в REST
Спасибо
Chris