如何解决访问 graphql 端点时无服务器离线会引发错误 - 为什么会这样?
我正在设置一个使用 graphql(通过 apollo-server-lambda
)并在 aws lambda 上运行的小应用程序。我的 serverless.yml 配置包含 serverless-webpack
以便对代码进行一些优化以加快这些 lambda 处理程序的冷启动速度。
当我运行 serverless offline start
时,应用程序似乎可以正常启动,但当我访问 http://localhost:3000/dev/graphql
时,我收到此错误:
Error: offline: handler 'handler' in /home/stark/Work/app/backend/dist/service/src/app is not a function
at InProcessRunner.run (/home/stark/Work/app/backend/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:148:13)
at processticksAndRejections (node:internal/process/task_queues:93:5)
at LambdaFunction.runHandler (/home/stark/Work/app/backend/node_modules/serverless-offline/dist/lambda/LambdaFunction.js:325:20)
at hapiHandler (/home/stark/Work/app/backend/node_modules/serverless-offline/dist/events/http/HttpServer.js:521:18)
at module.exports.internals.Manager.execute (/home/stark/Work/app/backend/node_modules/@hapi/hapi/lib/toolkit.js:45:28)
at Object.internals.handler (/home/stark/Work/app/backend/node_modules/@hapi/hapi/lib/handler.js:46:20)
at exports.execute (/home/stark/Work/app/backend/node_modules/@hapi/hapi/lib/handler.js:31:20)
at Request._lifecycle (/home/stark/Work/app/backend/node_modules/@hapi/hapi/lib/request.js:312:32)
at Request._execute (/home/stark/Work/app/backend/node_modules/@hapi/hapi/lib/request.js:221:9)
我的 serverless.yml 如下所示:
service: app
provider:
name: aws
runtime: nodejs12.x
region: us-east-1
apiGateway:
shouldStartNameWithService: true
functions:
graphql:
handler: src/app.handler
events:
- http:
path: graphql
method: post
cors: true
- http:
path: graphql
method: get
cors: true
plugins:
- serverless-dotenv-plugin
- serverless-webpack
- serverless-offline
custom:
webpack:
includeModules: true
我在 app.ts
中的处理程序(被编译为 app.js
)再简单不过了:
module.exports.handler = async (event: APIGatewayProxyEvent,context: LambdaContext) => {
console.log('Getting data...');
console.log('success');
};
我也尝试使用 export const handler = ...
语法导出 - 结果相同。
我在 /home/stark/Work/app/backend/dist/service/src/app.js
打开文件,我看到 run 函数被正确转换和导出(或者看起来是这样):
module.exports.run = (event,context) => __awaiter(void 0,void 0,function* () {
console.log('Getting data...');
console.log('success');
});
我错过了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。