Next.js — Можно ли отладить getServerSideProps?

#next.js

#next.js

Вопрос:

Привет, согласно документам getServerSideProps — это функция, которая выполняется только на стороне сервера.

 export async function getServerSideProps(context) {
  console.log("hello world");
  debugger;
  return {
    props: {
      age:55
    }, // will be passed to the page component as props
  }
}
  

Как следствие, простое удаление ключевого слова debugger не будет работать.

Я пробовал:

  • Прикрепление node.js отладчик на порту 9229
  • Выполняется node --inspect-brk ./node_modules/next/dist/bin/next
  • Выполняется cross-env NODE_OPTIONS='--inspect' next dev

Но ни ключевое слово console.log(), ни ключевое слово debugger, похоже, не имеют никакого эффекта.

Однако мои реквизиты из getServerSideProps передаются правильно, что доказывает, что функция вызвана.

Возможно ли пошаговое выполнение getServerSideProps или, по крайней мере, получить консоль.журнал работает? Спасибо!

PS

Строки кода за пределами getServerSideProps отлаживаемы и работают должным образом.

Ответ №1:

Для того, чтобы открыть порт отладки, вам необходимо выполнить следующее:

 // package.json scripts
"dev": "NODE_OPTIONS='--inspect' next dev"
// if you want custom debug port on a custom server
"dev": "NODE_OPTIONS='--inspect=5009' node server.js",
  

После того, как порт отладки будет собственным, вы сможете использовать клиенты инспектора по вашему выбору.

Ответ №2:

У меня была такая же проблема, и я решил ее следующими шагами. Сначала я установил cross-env пакет с

 npm install cross-env
  

затем мне пришлось настроить мой package.json с

 "dev": "cross-env NODE_OPTIONS='--inspect' next dev",
  

После этого вы сможете запустить npm run dev .
Откройте localhost:3000 или любой другой порт, на котором вы обычно запускаете nextjs приложение. Откройте новую вкладку и введите

  chrome://inspect
  

Вы должны иметь возможность видеть путь к вашему приложению с помощью word inspect в конце. После нажатия кнопки new devTools откроется возможность установки точек останова внутри, например getStaticPaths , getStaticProps или getServerSideProps .