配置正确仍遇Serverless Offline路由未找到错误求助
解决方案
核心问题1:路径配置重复stage前缀
你的serverless.yml中http事件的path设置为/dev/login,但provider已经指定了stage: dev,serverless-offline会自动将stage作为路径前缀添加到端点中,这就导致实际生成的路由是/dev/dev/login,而你访问的http://localhost:3000/dev/login自然会提示"route not found"。
修改serverless.yml中的http路径配置,去掉重复的/dev前缀:
functions: login: handler: login.handler events: - http: path: login # 改为login,去掉/dev前缀 method: get cors: true
修改后重启serverless-offline,此时正确的访问路径就是http://localhost:3000/dev/login。
核心问题2:GET方法不适合处理带请求体的登录逻辑
你的handler代码中尝试解析event.body获取用户名和密码,但GET请求通常不会携带请求体,浏览器或工具发送GET请求时,event.body会是undefined,执行JSON.parse(event.body)会直接抛出错误。建议将登录接口的HTTP方法改为POST:
修改serverless.yml中的method:
functions: login: handler: login.handler events: - http: path: login method: post # 改为post cors: true
同时测试时使用POST请求,将用户名密码放在请求体中发送。
验证步骤
- 保存修改后的
serverless.yml - 停止当前serverless-offline进程,重新执行
serverless offline start - 查看控制台输出的路由列表,确认
POST /dev/login已正确注册 - 使用POST工具(如Postman、curl)发送请求到
http://localhost:3000/dev/login,请求体携带{"username":"xxx","password":"xxx"}
内容的提问来源于stack exchange,提问作者Haris Ali Mughal
相关产品推荐
相关产品推荐

