1

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

这是我的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

我在这里想念什么?为什么端口总是不同的?

4

1 回答 1

1

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

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

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

[build]
functions = "functions"

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

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

于 2019-12-22T15:14:24.760 回答