Gatsby + Netlify-Dev Lambda Functions - Порт лямбда-сервера всегда отличается?

Я пытаюсь использовать 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

Что мне здесь не хватает? А почему порт всегда разный?


person R. Kohlisch    schedule 22.12.2019    source источник


Ответы (1)


Несмотря на то, что вы устанавливаете порт 8000, он не сможет его использовать, потому что он уже используется gatsby develop. Вот почему он всегда дает вам другой номер порта. Если вы хотите, чтобы номер порта всегда был одинаковым, используйте другое случайное число (8888 используется по умолчанию, если вы не устанавливаете порт).

Что касается ваших функций netlify, если вы не хотите установить другой порт по какой-либо конкретной причине, я бы оставил их как есть и просто вызвал их, используя: /.netlify/functions/your-function-name.

Я в основном использую эту минимальную конфигурацию на моем netlify.toml

[build]
functions = "functions"

Тогда в вашем коде вам не нужно беспокоиться о номерах портов.

ОБНОВЛЕНИЕ Похоже, это проблема последней netlify-cli версии. issue уже открыт. Откат к предыдущей версии кажется хорошим временным решением.

person Mindastic    schedule 22.12.2019
comment
номер порта, который всегда отличается, - это тот, который используется netlify functions server , но не для сервера gatsby. Я не пытаюсь установить netlify functions server на порт 8000 (где запущен gatsby). Кроме того, я только что изменил этот порт, и он все еще дает мне случайные номера портов для сервера netlify? Я не уверен, что понимаю! - person R. Kohlisch; 22.12.2019
comment
Даже если я полностью удалю сценарий [dev] и использую минимальную конфигурацию, номер моего порта будет постоянно меняться. - person R. Kohlisch; 22.12.2019
comment
Netlify по умолчанию будет использовать один и тот же порт для всего. И сайт, и функции. При использовании netlify вы не должны заходить на свой сайт с https://localhost:8000, как при запуске gatsby develop. Вместо этого вы должны получить к нему доступ по номеру порта, который он генерирует (обычно это вкладка, которая открывается автоматически после завершения запуска процесса). Если вы используете эту вкладку, вам не нужно беспокоиться о serverless номере порта, потому что он будет использовать тот же самый. Что касается случайного порта, проверьте, не запущено ли что-либо на порту 8888, потому что это тот, который он пытается использовать по умолчанию. - person Mindastic; 22.12.2019
comment
Другой вариант - установить совершенно другой порт. port = 8123, например. Это не часто используемый номер для серверов и приложений, поэтому он не должен генерировать случайные порты, если вы это сделаете. - person Mindastic; 22.12.2019
comment
Хм. Спасибо. На порте 8888 ничего не запущено. Кроме того, Netlify CLI ничего не открывает. В терминале gatsby регистрирует Success!, а затем добавляются точки, указывающие на какую-то загрузку. Хотя это займет вечность. - person R. Kohlisch; 22.12.2019
comment
Пробовал с совершенно другим портом 8123 - все равно не работает. - person R. Kohlisch; 22.12.2019
comment
В любом случае, вы пробовали просто использовать /.netlify/functions/your-function-name? без установки прокси? Вот как я использую его во всех своих проектах (несмотря на то, что лямбда-сервер каждый раз инициализируется на другом порту - даже на другом порту приложений -), и он отлично работает. - person Mindastic; 22.12.2019
comment
Подождите, я думаю, проблема с последним netlify-cli обновлением. Он отлично работал у меня, и я только что обновился до последней версии, и возникла та же проблема, которую вы описываете (продолжает загружаться). Странный. - person Mindastic; 22.12.2019
comment
Я могу получить доступ к /.netlify/functions/your-function-name, если использую указанный случайный порт. Я не могу получить доступ к пути только с портом 8000 (или где бы то ни было, где работает gatsby). Я только что создал новый проект, чтобы проверить это, но он тоже продолжает загружаться. Интересно у вас такая же ошибка. Проклятие. : / - person R. Kohlisch; 22.12.2019
comment
Спасибо! Похоже, это та же проблема! Хотя только что пробовал откатиться на 2.11.13, не помогает. - person R. Kohlisch; 22.12.2019
comment
Я откатился на 2.11.12, и это, похоже, у меня работает лучше. Хотя не уверен на 100%. - person R. Kohlisch; 22.12.2019
comment
Теперь работает. Я также удалил все, что касается портов, и использую минимальную конфигурацию, как вы сказали. Кажется, мне даже не нужна http-proxy-middleware & перенаправление в Гэтсби? Кроме того, если вы хотите отправить что-то в качестве ответа, я бы выбрал это. - person R. Kohlisch; 22.12.2019