#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
.