Apollo GraphQL Lambda 处理程序在访问 http 端点时无法读取未定义的属性“方法”

问题描述 投票:0回答:1

我的代码,

index.js ........................


import { ApolloServer } from '@apollo/server';
import { startServerAndCreateLambdaHandler, handlers, middleware } from '@as-integrations/aws-lambda';

const typeDefs = `#graphql
  type Query {
    hello: String!
  }
`;


const resolvers = {
  Query: {
    hello: () => 'world',
  },
};

const server = new ApolloServer({
  typeDefs,
  resolvers,
});


const graphqlHandler = startServerAndCreateLambdaHandler(
  server,
  handlers.createAPIGatewayProxyEventV2RequestHandler(),
  {
    middleware: [
      async (event) => {
        console.log('###? received event=' + JSON.stringify(event))
      }
    ]
}
);


export { graphqlHandler as handler  }

无服务器.yml ........................

service: apollo-lambda
provider:
  name: aws
  runtime: nodejs16.x
  httpApi:
    cors: true
functions:
  graphql:
    handler: src/server.handler
    events:
      - httpApi:
          path: /cep
          method: POST
      - httpApi:
          path: /cep
          method: GET
plugins:
  - serverless-offline

package.json ................................

  "dependencies": {
    "@apollo/server": "^4.9.5",
    "@as-integrations/aws-lambda": "^3.1.0",
    "graphql": "^16.8.1"
  },
  "devDependencies": {
    "@types/node": "^20.8.10",
    "serverless-offline": "^13.2.0"
  }

部署到 AWS Lambda 并访问端点后,抛出以下错误。代码打包为 .zip 文件并通过 AWS 控制台手动部署到 Lambda。

Cannot read properties of undefined (reading 'method')

可能是什么问题?

amazon-web-services aws-lambda lambda cors apollo-server
1个回答
0
投票

我发现 es6 导出与无服务器很敏感。尝试:

exports.handler = graphqlHandler

index.js

© www.soinside.com 2019 - 2024. All rights reserved.