Проблемы с миграцией Now 2 - PullRequest
0 голосов
/ 18 октября 2019

Как указано здесь на Spectrum, у меня возникают проблемы при переносе моего следующего веб-сайта с пользовательского сервера Express на Now. Моя проблема в том, что я не могу получить домашнюю страницу, потому что я пытаюсь отправить параметры URL, но безуспешно. Мне нужно передать параметр lang следующим образом:

localhost:3000/en

Затем я должен получить Дом, как и ожидалось. Но я получаю это исключение:

TypeError: Невозможно прочитать свойство 'lang' undefined в Function.getInitialProps (/ Users / lucacattide / Vagrant / debian / public / LC / front-end /. next / server / static / development / pages / _document.js: 1111: 32)

Это потому, что я ранее читал параметр ctx.req.params.lang из _document.js getInitialProps по различным причинам. Даже заменяя его на ctx.req.query.lang, я все еще получаю его.

В настоящее время я копирую два примера, как в руководстве по миграции Zeit, так и в статье. Как оба предполагают, я пробую подход API (https://zeit.co/guides/migrate-to-zeit-now/) и pages тоже (https://zeit.co/guides/custom-next-js-server-to-routes/).) В API я реализовал внутри /api путь,Сегмент [lang].js со следующим содержимым:

module.exports = (req, res) => {
  res.send(req.query.lang);
}

Затем с копией /pages я скопировал и переименовал index.js в [lang].js в том же пути и заменил req.query.langкак упомянуто выше. Оба из них не работают. Я застрял с тем же исключением, которое предупреждает о _document.js. Мне это нужно из-за различных процессов внутри него, поэтому удаление его не вариант в моем случае. Конечно, я тестирую среду Now (now dev) на моем localhost. Приложение отлично работает на Express, поэтому я надеюсь решить эту проблему, чтобы правильно установить его на Now.

Кто-нибудь испытывал это раньше или мог бы помочь мне с каким-нибудь предложением?

Заранее спасибо за поддержку.

РЕДАКТИРОВАТЬ:

Я тоже пытался форсировать путипутем определения маршрутов в now.json, но результат тот же. Вот моя текущая конфигурация:

{
  "public": false,
  "name": "LC",
  "version": 2,
  "routes": [{
    "src": "/(?<lang>[^/]+)",
    "dest": "/?lang=$lang"
  }]
}

РЕДАКТИРОВАТЬ 2:

Я переключил все в pages dir, как предложено во втором руководстве, потому что я ничего не получил от /api. Попытка размещения только [lang].js маршрута и удаления определений маршрутов из now.json.

В этот момент при проверке объекта req я получаю пустой объект.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Из-за обновлений платформы Now - v2 - я заметил, что многие разделы Next API изменились. Изменяя мой код, чтобы следовать новым подходам, я могу получить ранее отсутствующий параметр. Подробно я следовал советам по маршрутам API в последней официальной документации

Спасибо всем за помощь.

0 голосов
/ 18 октября 2019

Если вы используете прохождение lang следующим образом localhost:3000/en, используйте приведенный ниже фрагмент для доступа к этому

req.params.lang

Но если вы проходите lang следующим образом localhost:3000?lang=en

Тогда используйте это

req.query.lang
...