“无服务器-离线:找不到路由。”在离线模式下运行 AWS Lambda 函数

2024-03-30

这个问题几乎与无服务器离线未获取路由 https://stackoverflow.com/questions/55130796/serverless-offline-not-getting-route,但由于这个问题没有得到答复,我再次询问。我正在尝试关注这篇文章,https://medium.com/@awesome1888/how-to-use-serverless-locally-with-webpack-and-docker-5e268f71715 https://medium.com/@awesome1888/how-to-use-serverless-locally-with-webpack-and-docker-5e268f71715,了解如何使用 Serverless 部署 Lambda 函数。

我有一个具有以下结构的目录:

> tree -I node_modules
.
├── package-lock.json
├── package.json
├── serverless.yml
├── src
│   ├── handler.js
│   └── index.js
└── webpack.config.js

where serverless.yml reads

service: my-first-lambda

plugins:
  - serverless-webpack
  - serverless-offline

provider:
  name: aws
  runtime: nodejs10.x
  region: us-east-1
  stage: dev

functions:
  hello:
    handler: src/handler.main
    events:
      - http:
        path: /hello
        method: any

custom:
  webpack:
    includeModules: true

src/index.js reads

import moment from 'moment';

const handler = async (event, context) => {
  const body = await new Promise((resolve) => {
    setTimeout(() => {
      resolve(`Hello, this is your lambda speaking. Today is ${moment().format('dddd')}`)
    }, 2000);
  });
  return {
    statusCode: 200,
    body,
  };
}

export default handler;

src/handler.js reads

export { default as main } from './index';

and webpack.config.js reads

const path = require("path");
const nodeExternals = require("webpack-node-externals");
const slsw = require("serverless-webpack");

module.exports = {
  entry: slsw.lib.entries,
  target: "node",
  mode: slsw.lib.webpack.isLocal ? "development" : "production",
  externals: [nodeExternals()],
  output: {
    libraryTarget: "commonjs",
    path: path.join(__dirname, ".webpack"),
    filename: "[name].js"
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          {
            loader: "babel-loader",
            options: {
              presets: ["@babel/preset-env"],
              plugins: ["@babel/plugin-proposal-object-rest-spread"]
            }
          }
        ]
      }
    ]
  }
};

问题是当我在离线模式下启动该功能时,它似乎只有一条非常具体的路线:

> 
npx serverless offline start --region us-east-1 --noTimeout --port 3000 --host 0.0.0.0
Serverless: Bundling with Webpack...
Time: 1203ms
Built at: 08/30/2019 2:35:10 PM
         Asset      Size       Chunks             Chunk Names
src/handler.js  6.81 KiB  src/handler  [emitted]  src/handler
Entrypoint src/handler = src/handler.js
[./src/handler.js] 42 bytes {src/handler} [built]
[./src/index.js] 1.64 KiB {src/handler} [built]
[moment] external "moment" 42 bytes {src/handler} [built]
Serverless: Watching for changes...
Serverless: Starting Offline: dev/us-east-1.

Serverless: Routes for hello:
Serverless: POST /{apiVersion}/functions/my-first-lambda-dev-hello/invocations

Serverless: Offline [HTTP] listening on http://0.0.0.0:3000
Serverless: Enter "rp" to replay the last request

如果我去http://localhost:3000/你好 http://localhost:3000/hello,我得到这样的回应:

{"statusCode":404,"error":"Serverless-offline: route not found.","currentRoute":"get - /hello","existingRoutes":["post - /{apiVersion}/functions/my-first-lambda-dev-hello/invocations"]}

知道为什么这不起作用吗? (我读过https://serverless.com/framework/docs/ https://serverless.com/framework/docs/但无法快速找到答案)。


我遇到了这个问题,如果有人遇到这个问题,这个github 评论解决了我的问题 https://github.com/dherault/serverless-offline/issues/911#issuecomment-606411258.

你可以运行$ sls offline start --noPrependStageInUrl或将以下内容添加到您的serverless.yml file

custom:
  serverless-offline:
    noPrependStageInUrl: true

根据评论:

我对 6+ 的任何内容都遇到了这个问题,这是因为它现在默认将暂存名称附加到 url 路径。要恢复到旧方式,您需要将 --noPrependStageInUrl 添加到 cli 或 serverless 文件中 custom: serverless-offline noPrependStageInUrl: true 以恢复到之前的设置。我正在对其进行测试,但@dherault 该功能并未反映 AWS 中实际发生的情况。

我正在使用serverless-offline: "6.7.0" and my index.handler如下:

const serverless = require("serverless-http");
const express = require("express");
const app = express();

app.get("/", function (req, res) {
  res.send("Hello World!");
});

module.exports.handler = serverless(app);

And my serverless.yml

plugins:
  - serverless-offline

custom:
  serverless-offline:
    noPrependStageInUrl: true

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: eu-west-2

functions:
  app:
    handler: src/index.handler
    events:
      - http: ANY /
      - http: "ANY {proxy+}"

抱歉,这并不是一个很好的答案,但希望有人遇到这个问题,这是他们问题的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“无服务器-离线:找不到路由。”在离线模式下运行 AWS Lambda 函数 的相关文章

  • 无法显示由 Fine-uploader 上传到 Amazon s3 的图像

    我现在尝试设置fineuploader s3以显示在aws服务器上成功上传的文件的图像 如示例页面上所做的那样 http fineuploader com s3 demo http fineuploader com s3 demo 我 仍然
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 在 MongoDB 中查找具有字符串 ID 数组的文档

    我有一个 id 字符串数组 我想将其与 find 函数一起使用 db companies find id in arr arr看起来像这样 563a2c60b511b7ff2c61e938 563a2c60b511b7ff2c61e8b7
  • 限制文本区域中每行的字符数

    我整个周末都在寻找解决这个难题的方法 但尚未找到一个可以正常工作的解决方案 我想要实现的是限制文本区域中每行的字符数 不是相同地限制它们 而是我选择的每行不同的字符数 例如 我只想在我的文本区域中包含 4 行 第 1 2 和 3 行将限制为
  • 如何通过 HTML 按钮播放声音

    我目前通过网站播放音乐的方法是通过 HTML 音频标签 不过我希望能够通过 HTML 按钮来播放它 该按钮应该能够在播放和停止之间切换音乐 我在 JSFiddle 创建了一个示例 但不知道如何实现它 有人可以告诉我如何使用我的 JSFidd
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 将一个文本框的内容复制到另一个文本框

    假设在文本框中输入了一个条目 是否可以在第二个文本框中保留相同的输入文本 如果是这样 这是如何完成的
  • 禁用 JavaScript 中的右键单击

    当我尝试禁用右键单击时 它不起作用 我尝试使用下面的代码 document onclick function e console log e button if e button 2 e preventDefault return fals
  • 响应式网格布局框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ElectronJS ReferenceError:导航器未定义

    我正在尝试在电子上制作自定义标题栏 但是当我启动我的应用程序时 我遇到了 ReferenceError 导航器未定义 问题 请帮忙 这是我的 main js 中的代码片段 My Codes https i stack imgur com c
  • 如何使用 jQuery 向表中添加新行,并为其分配递增的 id

    我有一个现有的 HTML 表格 它是用户输入 GPS 点的表单的一部分 用户还可以选择上传 GPS 数据点 我想要一个用户可以按下的按钮 其中一些 Javascript 会向表中添加一个或多个新行 但新行必须继续增加表中使用的名称和 id
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • 如何将 Browserify 与外部依赖项一起使用?

    我正在尝试慢慢地将 Browserify 引入我的网站 但我不想重写所有 js 也不希望 jquery 和其他库的重复实例与我的 Browserify 版本捆绑在一起 如果我构建将 jquery 列为外部依赖项的模块 那么如何将其指向我的全
  • window.showModalDialog 的等效跨浏览器解决方案是什么?

    window showModalDialog 的等效跨浏览器解决方案有哪些 showModalDialog 在 IE 和 FF 3 中引入 我个人认为没有 但是有很多 UI 工具包提供了这样的功能 例如jQuery UI http jque
  • 从多维无穷大数组中删除数组元素

    我想删除一个特定元素 例如 我想删除元素id 76在下面的数组中 而且 数组可以无限地组合在一起 这里的问题是我无法刷新页面 因为我使用 Vue js 进行即时操作 如果我能做到这一点 我的下一个问题可能是如何在我现在想要的地方添加一个元素
  • Jquery:选择菜单以显示和隐藏某些div元素

    我正在创建一个选择菜单 根据所选选项显示和隐藏某些 div 像这样的东西
  • ES6 模板文字的延迟执行

    我正在玩新的ES6 模板文字 http tc39wiki calculist org es6 template strings 我首先想到的是String format对于 JavaScript 所以我开始实现一个原型 String pro
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o

随机推荐

  • 色彩图的非线性缩放以增强对比度

    以下 python 代码创建包含正态分布值的矩阵热图 import numpy as np from matplotlib import pylab as plt np random seed 123 make sure we all ha
  • 如何迁移到WKWebView?

    我试图了解如何使用 iOS8 中新的 WKWebView 但找不到太多信息 我读了 http developer telerik com featured why ios 8s wkwebview is a big deal for hyb
  • 学习 Objective-C 的好资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Maven 获取特定类

    有没有一种方法可以让 maven 在将依赖项导入 uber jar shade 时仅包含特定的 class 文件 我正在寻找一种方法来将名称中包含 Client 的文件从依赖项 jar 中提取出来并添加到最终的 jar 中 任何帮助都会很棒
  • Python 中的字母数字排序和负数

    我有一个相当简单的列表 一个数字后跟一个句子 这里按正确的顺序 347 a negative number 100 another negative number 25 and again a negative number 17 some
  • ArrayCollection 删除排序

    对我的数据提供程序 数组集合 应用数字排序后 我无法通过平铺列表对项目重新排序 我是否需要从 arrayCollection txt 中删除排序 如果是这样 这只是设置 collection sort null 的情况吗 var sortF
  • 为什么用户控件加载事件没有被触发

    我有一个用户控件 我有时再次遇到这种情况 但总是可以通过使用 New 构造函数 但我仍然想知道我做错了什么 因为如果加载了控件 则必须触发 load 事件 这是一些代码
  • 签名 url 中存在 MalformedSecurityHeader 错误 - 标头包含在签名标头中,但未包含在请求中

    我正在尝试使用签名 URL 使用 React 和 Node js 通过 Google 应用程序引擎上传文件 我能够生成签名 URL 但在控制台中收到 CORS 错误时 当我在浏览器中打开签名 URL 时 收到以下错误
  • 错误 LNK1120:1 未解析的外部 - VS13 C [重复]

    这个问题在这里已经有答案了 我尝试编译这段代码 include
  • 如何在 Yahoo PHP5 Sdk yos-social-php5 上使用 YQL 获取私有数据

    我在用雅虎 PHP5 SDK https github com yahoo yos social php5并使用它从表 Social contacts 中获取用户联系人 该表是私有数据 在 Delicious 的示例中 它仅显示从 YQL
  • 使用 Swift 的预期声明错误

    我正在尝试传递 a 的布尔值UISwitch到另一个班级使用NSUserDefaults 由于某种原因 在包含开关的类中 if应该将值设置为的语句NSUserDefaults无法读取 switch 声明 ViewController swi
  • jquery .eq() 方法中的“eq”代表什么?

    例子 td eq 2 css color red or td eq 2 css color red 我想知道缩写 eq 代表什么 我不是问 eq 方法是做什么的 可以找到here http api jquery com eq 关于这个问题的
  • Mono Cecil 生成 PDB 时出错

    下面的代码允许我更改方法主体并保存回程序集 Recreate PDB var assemblyResolver new DefaultAssemblyResolver var assemblyLocation Path GetDirecto
  • 当值是列表时交换字典键和值

    类似于这个问题 https stackoverflow com questions 1031851 python best way to exchange keys with values in a dictionary and 这个问题
  • 初始化 Facebook 评论后加载 jScrollPane - 如何?

    Facebook 评论插件是否有 onComplete 状态或类似状态 我正在尝试将 jScrollPane 滚动条添加到其中包含 FB Comments 的内容框 发生的情况是我将 FB Comments iframe 放置在框内容的顶部
  • 从 R 中的语料库创建单词子集

    我使用 XML 包根据 Twitter 搜索创建了一个 1 500 行向量 然后我将其转换为语料库以与 tm 包一起使用 我希望最终使用其中一些 最常见的 单词创建一个词云 因此我将其转换为 TermDocumentMatrix 以便能够找
  • EF LINQ ToList 非常慢

    我在用ASP NET MVC4 5 和EF6 代码优先迁移 我有这段代码 大约需要 6 秒 var filtered repository Requests Where r gt some conditions this is fast c
  • PHP网站如何防止多次登录

    我想防止在 php 应用程序中多次登录 首先 我在用户表中创建登录状态 活动 非活动 当用户 A 登录时 用户状态将设置为 active 如果用户注销 状态将设置为 notactive 当另一个客户端尝试使用相同的用户帐户登录时 我会检查用
  • sphinx,重组文本:表格的颜色单元格/行

    有没有办法为 sphinx 中表格中的特定行着色 我尝试使用 role 它与 CSS 文件相关 如中讨论的sphinx restructedtext 为单个单词设置颜色 https stackoverflow com questions 3
  • “无服务器-离线:找不到路由。”在离线模式下运行 AWS Lambda 函数

    这个问题几乎与无服务器离线未获取路由 https stackoverflow com questions 55130796 serverless offline not getting route 但由于这个问题没有得到答复 我再次询问 我