【问题标题】:Gatsby + Netlify-Dev Lambda Functions - Lambda Server Port always different?Gatsby + Netlify-Dev Lambda 函数 - Lambda 服务器端口总是不同?
【发布时间】:2019-12-23 00:24:42
【问题描述】:

我正在尝试在我的 gatsby 项目中使用 netlify-dev 及其无服务器功能。

这是我的netlify.toml 文件

[build]
  functions = "lambda"
  command = "gatsby build"
[dev]
  command = "gatsby develop"
  functionsPort = 34567
  port = 8000
  publish = "public"
  targetPort = 8000

我将此添加到我的 Gatsby 配置中

const proxy = require("http-proxy-middleware")
module.exports = {
  developMiddleware: app => {
    app.use(
      "/.netlify/functions/",
      proxy({
        target: "http://localhost:34567",
        pathRewrite: {
          "/.netlify/functions/": "",
        },
      })
    )
  },
  //...

但是,端口似乎有问题 我每次运行netlify dev时总是得到一个新的随机端口

Netlify Dev ◈
◈ Injected build setting env var:  CLOUDINARY_CLOUD_NAME
◈ Injected build setting env var:  CLOUDINARY_API_KEY
◈ Injected build setting env var:  CLOUDINARY_SECRET
◈ Starting Netlify Dev with gatsby
Waiting for localhost:8000.
◈ Lambda server is listening on 61271 //*** I would expect this to be 34567? ***
success open and validate gatsby-configs - 0.066s
⠋ load plugins

我在这里缺少什么?为什么端口总是不同的?

【问题讨论】:

    标签: javascript aws-lambda gatsby netlify toml


    【解决方案1】:

    尽管您设置了端口8000,但它无法使用它,因为它已被gatsby develop 使用。这就是为什么它总是给你一个不同的端口号。如果您希望端口号始终相同,请使用另一个随机数(如果您不设置端口,则默认使用 8888)。

    关于您的 netlify 函数,除非您出于任何特定原因想要设置不同的端口,否则我将保持原样并使用以下方式调用它们:/.netlify/functions/your-function-name

    我主要在我的netlify.toml 上使用这个最低配置

    [build]
    functions = "functions"
    

    然后,在您的代码中,您无需担心端口号。

    更新 这似乎是最新的netlify-cli 版本的问题。已经有一个issue open。 回滚到以前的版本似乎是一个很好的临时解决方案。

    【讨论】:

    • 总是不同的端口号是 netlify functions server though - 而不是 gatsby 服务器。我不想将netlify functions server 设置为端口8000(运行 gatsby)。另外,我刚刚更改了那个端口,它仍然给我 netlify 服务器的随机端口号?我不确定我是否理解!
    • 即使我完全删除了[dev] 脚本,并且只使用最小配置,我的端口号也会不断变化。
    • Netlify 默认情况下会为所有内容使用相同的端口。站点和功能。使用 netlify 时,您不应像运行 gatsby develop 时那样使用 https://localhost:8000 访问您的站点。相反,您应该使用它生成的端口号(通常是完成启动进程后自动打开的选项卡)访问它。如果您使用该选项卡,则不必关心serverless 端口号,因为它将使用相同的端口号。关于端口是随机的,请检查端口 8888 中是否已经有任何东西在运行,因为这是它默认尝试使用的端口。
    • 另一个选项是设置一个完全不同的端口。 port = 8123,例如。它不是服务器和应用程序的常用数字,因此如果您这样做,它不应该生成随机端口。
    • 嗯。谢谢。端口8888 上没有运行任何东西。此外,Netlify CLI 不会打开任何东西。在终端中,gatsby 记录Success!,然后添加了一些点,表示某种加载。不过这需要很长时间。
    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2020-04-07
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多