Gatsby + Netlify-Dev Lambda 函数 - Lambda 服务器端口总是不同?

Gatsby + Netlify-Dev Lambda Functions - Lambda Server Port always different?

我正在尝试在我的 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

我在这里错过了什么?为什么端口总是不同?

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

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

我主要在 netlify.toml

上使用此最低配置
[build]
functions = "functions"

那么,在您的代码中,您无需担心端口号。

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