Как получить правильные номера строк трассировки стека на стороне сервера в Next.js?

#webpack #next.js

Вопрос:

Наша команда работает довольно просто Next.js приложения и видим неправильные номера строк в трассировках стека на консоли, когда мы сталкиваемся с проблемами в нашем коде.

Чтобы взять тривиальный пример, начните с кода учебника по созданию следующего приложения, который можно найти здесь. Затем измените эту функцию обработчика, чтобы выдать ошибку:

 export default function handler(req, res) {
  throw new Error("line2");
  res.status(200).json({ text: 'Hello' })
}
 

в ./pages/api/hello.js

Затем посетите http://localhost:3000/api/hello

На консоли мы видим:

 Error: line2
    at handler (webpack-internal:///./pages/api/hello.js:4:9)
    at apiResolver (/home/jasonnet/jack_work/nextjs-blog/node_modules/next/dist/next-server/server/api-utils.js:8:7)
    at process._tickCallback (internal/process/next_tick.js:68:7)
 

в котором указана ошибка в строке 4, а не 2.

Это всего лишь тривиальный пример. Мы обнаружили, что иногда это, по-видимому, работает нормально (например, в Linux с Next.js 11.0), но на самом деле правильный номер строки отображается случайно, и простое добавление импорта в верхней части файла показывает, что на самом деле он не работает. Поэтому я спрашиваю…

Каков поддерживаемый способ исправить это в 2021 году? Next.js (например, v10, v11) ?