Путешествие по Next.js: от ошибок с not-found до форка next-runtime-env

Джерело:
Хабрахабр:

Дата публікації:
02/10/2024 12:15

Постійна адреса новини:
http://www.vsinovyny.com/11334297

Путешествие по Next.js: от ошибок с not-found до форка next-runtime-env

 

02/10/2024 12:15 // Хабрахабр:

Недавно столкнулся с интересным багом в Next.js. Если на странице not-found делать навигацию через router.push(pathname), теряются все переменные окружения, которые мы инициализируем через библиотеку next-runtime-env (значение window.__ENV становится undefined).

В проекте мы используем next-runtime-env, так как придерживаемся подхода Build once, deploy many — это позволяет держать один Docker-образ, в который при запуске прокидываются нужные переменные окружения. Next.js из коробки не поддерживает такое поведение, ведь он хочет собирать env-переменные на этапе сборки приложения.

Баг проявился на not-found странице, где у нас есть кнопка, позволяющая создать элемент в один клик, если что-то не найдено. Этот же компонент кнопки используется и на других страницах, и вот что интересно: на остальных страницах router.push(pathname) работает корректно, а на not-found — нет.

Сначала я подумал, что проблема кроется в next-runtime-env. Наверное, библиотека переопределяется при обновлении страницы, потому что скрипт, устанавливающий переменные в window.__ENV, размещён в root layout. Я также пробовал версионировать Next.js, предполагая, что баг связан с определёнными версиями фреймворка, но это не дало результатов. В итоге, временным решением стало использование window.location.href, что предотвращало рефреш страницы и помогало сохранить переменные.

Однако на этом история не закончилась.

Читать далее

 

» Читати повністю

 

« Наступна новина з архіву
Количественные исследования: погрешность выборки и сколько ответов нужно собрать
  Попередня новина з архіву
Чи можна заборонити АдН? У ФРН дедалі гучніше лунають відповідні заклики
»

 

 
© 2026 www.vsinovyny.com