Проблемы с миграцией Now 2

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

localhost:3000/en

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

TypeError: невозможно прочитать свойство lang of 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 все равно получаю.

В настоящее время я копирую два примера как из руководства по миграции, так и из статьи. Как предлагают оба, я пробую подход 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.json, но результат тот же. Вот моя текущая конфигурация:

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

ИЗМЕНИТЬ 2:

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

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


person Luca Cattide    schedule 18.10.2019    source источник


Ответы (2)


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

req.params.lang

Но если вы передаете такой язык localhost:3000?lang=en

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

req.query.lang
person iAmADeveloper    schedule 18.10.2019
comment
Спасибо @iamadeveloper, как я уже упоминал, я пробовал, но, к сожалению, все еще получаю исключение - person Luca Cattide; 18.10.2019
comment
Попробуйте распечатать объект запроса console.dir(req) - person iAmADeveloper; 18.10.2019
comment
В документации Zeit.co указано, что req.params больше не поддерживается их API. В любом случае, попытка с обоими query/params, req результатами пуста. - person Luca Cattide; 21.10.2019

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

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

person Luca Cattide    schedule 22.10.2019