Либо Link
либо Router
перестает работать при выполнении маршрутизации на стороне клиента. Похоже, HMR может прерывать переход между страницами. Чаще всего это происходит, если приложение какое-то время бездействует или находится в фоновом режиме (хотя я испытал это, когда щелкал мышью, когда оно не было в режиме ожидания)
Шаги по воспроизведению поведения, предоставьте фрагменты кода или репозиторий:
npm install
npm run dev
Я ожидаю, что смогу посетить все отдельные страницы
Страница не ведет к определенным маршрутам. Обновление страницы исправит это
Ссылки "о себе" и "контакт" не работают (обратите внимание на журнал HMR при первой попытке каждого маршрута). После обновления страницы они работают должным образом. Если я снова оставлю приложение бездействующим примерно на 2 минуты, проблема начнется заново.
Открыв консоль, вы можете увидеть, что событие Router routeChangeStart
срабатывает, но routeChangeComplete
никогда не запускается.
У меня такая же проблема
Я также вижу это в производственной среде, поэтому я не уверен, что HMR несет единоличную ответственность за проблему.
@ernerock Я развернул приведенный выше пример здесь, но проблема не возникает после запуска. Удалось ли вам воспроизвести в производственной среде?
@malimccalla Кажется, моя проблема отличается от вашей, однако поведение навигации такое же. Когда страница, на которую я перехожу, имеет импорт css
import 'react-alice-carousel/lib/alice-carousel.css';
поведение навигации такое же, как вы сообщили. Кажется, проблема с '@ zeit / next-css'
Кажется, уже сообщается в # 5291, может быть временно «решено» путем импорта и пустого файла css в _app.js
@ernerock Очень странно, они могут быть связаны каким-то окольным путём!
Та же проблема, у меня есть страницы, настроенные как / home и / home / subpage, тогда, если я попытаюсь перейти из / home в / home / подстраницу с помощью Router.push, или с помощью Router HOC, или даже Link, это не сработает.
Хорошо, теперь у меня есть дополнительная информация, я попытался переименовать / home в / home / welcome, но описанный выше случай все еще не работает для меня
@ maciej-ka Ах, да, я могу подтвердить, что это тоже происходит с push
это не просто Link
. Изменим название, так как оно немного вводит в заблуждение.
@timneutkens Извините, @ you Я знаю, что есть много других проблем, но есть ли шанс, что мы сможем это
Скорее всего, это связано с записями по запросу и их удалением.
Я немного покопался, и, похоже, это происходит из-за удаления страниц. Как только этот журнал появляется, на удаленные страницы больше нельзя переходить
> Disposing inactive page(s): /
Сегодня у меня есть немного времени, чтобы заняться более глубоким погружением, и я надеюсь получить открытый PR, чтобы исправить это. @timneutkens Спасибо за первоначальное понимание, дайте мне знать, если вы думаете, что есть какая-то часть этого файла, на которую я должен обратить особое внимание
Я попытался исправить это, но в связанных файлах много чего происходит, и, к сожалению, я не смог полностью разобраться в этом. Для всех, у кого есть эта проблема, в качестве текущего обходного пути я использую эту конфигурацию в моем next.config.js
чтобы продлить время до удаления страниц.
onDemandEntries: {
// period (in ms) where the server will keep pages in the buffer
maxInactiveAge: 25 * 1000,
// number of pages that should be kept simultaneously without being disposed
pagesBufferLength: 5,
},
У меня тоже есть эта проблема.
Кто-то изучает это? У меня тоже есть эта проблема, но не обязательно на всех маршрутах. Случайно, какой маршрут / маршруты перестают отвечать, но в конечном итоге все они перестают отвечать.
Я не могу разобраться в этом прямо сейчас, поскольку я сосредоточен на проблеме следующего сервера / лямбда-выражений, но, скорее всего, это связано с записями по запросу.
Да, конечно. Происходит после утилизации.
То же самое со мной.
Может ли кто-нибудь подтвердить мне, что это не проблема в производстве?
Может ли кто-нибудь подтвердить мне, что это не проблема в производстве?
В режиме производства все в порядке, после того, как я изменил ENV на производство, все идет нормально
У меня это есть как в разработке, так и в производстве. Неважно, если страница неактивна и т. Д. Я могу загрузить новую версию, и она не будет работать. В dev консоль сервера
> Building page: /contact
WAIT Compling...
success client complied in 462ms
но страница никогда не отображается в клиенте. При этом на клиентской консоли:
[HMR] bundle rebuilding
сообщение, тогда консоль сервера выдаст:
Disposing of inactive page(s): /, /contact
Если я наберу mysite.com/contact в браузере, он загрузится нормально.
Я пробовал обходиться в next.config.js
из maxInactiveAge
и pagesBufferLength
безрезультатно.
[надеялся, что это просто в разработке, как многие говорили]
РЕДАКТИРОВАТЬ: у меня есть import 'node-mod/dist/theme.css
в компоненте. Я переместил этот импорт в _app.js
и Link
работает.
Та же проблема, маршрут не завершается в режиме разработки после удаления. Это действительно раздражает.
@roytsang Вместо того, чтобы говорить «та же проблема», используйте 👍 по проблеме. Ваше руководство +1
не учитывается при сортировке по 👍
У меня такая же проблема. Это началось только сегодня, когда я начал использовать Head from next / head в своем _app для применения заголовка и значка.
@ Атмосферы пробовали ли вы @malimccalla ? Это не было полным исправлением, но сработало для меня как временное решение.
Я еще не дошел до этого, но скоро буду. Я просто подумал, что дополнительная информация о том, когда у меня возникла проблема, может быть полезна кому-то, кто ищет исправление.
Обновление: сегодня утром я проводил некоторые тесты, и вот что я обнаружил.
Проблемы начались вчера, единственная обновка, которую я реализовал, это Голова от next. Я понял, что изменил заголовок в _document, используемый для загрузки в стилях, на Head. Я также добавил Head в _app.js, чтобы установить заголовок и значок. Удаление Head в _app.js не помогло мне решить эту проблему. Удаление головы в _app и _document также не решило проблему. Я попробовал последнее: я вернул Head в _document к голове и оставил Head в _app, чтобы установить заголовок и значок, и теперь проблема исчезла.
Если по какой-либо причине проблема вернется, я обновлю здесь снова. Я надеюсь, что эта информация поможет исправить.
Обновление 2: проблема сохраняется, но возникает реже, чем это было раньше. Я заметил, что когда это происходит, я вижу, что тег скрипта, загружающий js для этой страницы, дублируется. Например, когда я впервые загружаю страницу "x", она добавляет to the body. Now this script tag should only be added to the body once, but on the times it fails to load I see the script tag added a 2nd, and then if I click the link again it is added a 3rd time, and so on. These additional script tags are only added a few times while staying on the same page and clicking the link, however if I navigate to another page and back to where the link was, I can click it and add several more script tags.
Update 3: Problem happens after a while on a single link. Tested loading my home page and not clicking anything, after a couple minutes the Elements tab in Chrome dev tools flashes, I'm assuming a HMR, and ALL Links were broken. I hope all of this information wasn't just a waste of time for you guys. The issue doesn't seem to be happening in production, so I guess I'll just ignore it for the moment.
Я еще не дошел до этого, но скоро буду. Я просто подумал, что дополнительная информация о том, когда у меня возникла проблема, может быть полезна кому-то, кто ищет исправление.
Обновление: сегодня утром я проводил некоторые тесты, и вот что я обнаружил.
Проблемы начались вчера, единственная обновка, которую я реализовал, это Голова от next. Я понял, что изменил заголовок в _document, используемый для загрузки в стилях, на Head. Я также добавил Head в _app.js, чтобы установить заголовок и значок. Удаление Head в _app.js не помогло мне решить эту проблему. Удаление головы в _app и _document также не решило проблему. Я попробовал последнее: я вернул Head в _document к голове и оставил Head в _app, чтобы установить заголовок и значок, и теперь проблема исчезла.
Если по какой-либо причине проблема вернется, я обновлю здесь снова. Я надеюсь, что эта информация поможет исправить.
Обновление 2: проблема сохраняется, но возникает реже, чем это было раньше. Я заметил, что когда это происходит, я вижу, что тег скрипта, загружающий js для этой страницы, дублируется. Например, когда я впервые загружаю страницу "x", она добавляет to the body. Now this script tag should only be added to the body once, but on the times it fails to load I see the script tag added a 2nd, and then if I click the link again it is added a 3rd time, and so on. These additional script tags are only added a few times while staying on the same page and clicking the link, however if I navigate to another page and back to where the link was, I can click it and add several more script tags.
Update 3: Problem happens after a while on a single link. Tested loading my home page and not clicking anything, after a couple minutes the Elements tab in Chrome dev tools flashes, I'm assuming a HMR, and ALL Links were broken. I hope all of this information wasn't just a waste of time for you guys. The issue doesn't seem to be happening in production, so I guess I'll just ignore it for the moment.
I think I also noticed the same thing a long ago, the day I shifted from NextJs 5 to NextJs 6 but ignored it since it's just dev problem. My production is working fine :)
Я исследую эту проблему прямо сейчас.
Решен в # 5994
Можно ли сообщить нам, в чем заключалась проблема и как мы могли бы решить эту проблему, если мы не можем выполнить обновление прямо сейчас? Например, это связано с загрузкой css? Это что-то, что можно изменить в конфиге?
@ jon64digital Я написал полную рецензию на эту проблему в № 5994, вы можете обойти ее, увеличив лимит времени удаления.
@timneutkens я использую 8.1.1-canary.24
но ошибка все еще существует для меня. Есть идеи?
Изменить: выяснил, что происходит. Не уверен, почему ...:
У меня были файлы index.tsx и index.less. Я использовал cssModules в моем файле netxt.config.js (используя withLess). При загрузке /subpage
и наличии ссылки, которая ссылается на /
(которая импортирует стили вроде этого: import css from './index.less';
), сценарий будет загружаться динамически ( http://localhost:3000/_next/static/development/pages/index.js
), но он не отображается. На самом деле URL-адрес вообще не меняется, он как будто завис ... Удаление less file import решило проблему.
Что делать?
Edit2: Кажется, я сталкиваюсь с https://github.com/zeit/next-plugins/issues/282
Я до сих пор иногда это случаю на 8.1.0
. Постараюсь воспроизвести и открыть новый выпуск
для меня тоже его не перейти к / около маршрута дает 404 каждый раз! не уверен, в чем проблема с маршрутизацией !? : /
package.json зависимости:
"dependencies": {
"cross-env": "^5.2.0",
"express": "^4.17.0",
"next": "^8.1.0",
"react": "^16.8.6",
"react-dom": "^16.8.6"
}
@jsbimra, пожалуйста, всегда предоставляйте полное воспроизведение. Невозможно заглянуть в "случается для меня"
@jsbimra, пожалуйста, _всегда_ предоставляйте полное воспроизведение. Невозможно заглянуть в "случается для меня"
обнаружил проблему, это было связано с отсутствием шага при создании страницы в папке страницы next.js, извините за беспокойство @timneutkens
любое решение для этого? это тоже происходит в производстве? потому что в dev это происходит со мной, ошибка с 2018 года и 22 мая 2019 года, эта ошибка еще не исправлена, если этого не происходит в производстве, меня это не беспокоит, но если это произойдет, то это действительно большая проблема ...
ошибка с 2018 года и 22 мая 2019 года, но эта ошибка не исправлена
На основании репродукции, предоставленной @malimccalla, это было исправлено.
если этого не происходит в производстве, меня это не волнует
Это не так.
Обратите внимание, что этот комментарий не решит вашу проблему. Как уже много раз говорилось ранее:
пожалуйста, всегда предоставляйте полное воспроизведение. Невозможно заглянуть в "случается для меня"
У меня такая же проблема с последней версией (8.1.0).
У меня такая же проблема с последней версией (8.1.0).
Я ответил примерно 3 раза одним и тем же сообщением. Пожалуйста, предоставьте репродукцию .
Обратите внимание, что этот комментарий не решит вашу проблему. Как уже много раз говорилось ранее:
пожалуйста, всегда предоставляйте полное воспроизведение. Невозможно заглянуть в "случается для меня"
Меня беспокоила проблема отсутствия доступа к ~ / index.tsx
.
Но я наконец нашел причину!
Я использовал библиотеку под названием react-activity
, но в то же время мне нужно было импортировать css.
Когда я дважды читаю один и тот же CSS в разных местах, мне кажется, что я не могу выполнить миграцию.
В результате чтения в _app.tsx
я смог успешно выполнить миграцию.
@timneutkens хорошо, конечно, я могу увеличить время утилизации, но как насчет ситуации, когда сервер запускается в первый раз? Я не смогу перейти к этим страницам программно, потому что они еще не созданы. 🤔
Я ответил примерно 4 раза одним и тем же сообщением. Пожалуйста, предоставьте репродукцию .
Обратите внимание, что этот комментарий не решит вашу проблему. Как уже много раз говорилось ранее:
пожалуйста, всегда предоставляйте полное воспроизведение. Невозможно заглянуть в "случается для меня"
Чтобы ответить на конкретный вопрос, страницы создаются по запросу, и эта система отлично работает. Я предполагаю, что у вас есть что-то в вашей конфигурации, из-за чего webpack не запускает файл как готовую сборку. Однако сложно / невозможно сказать, потому что репродукции нет.
Также обратите внимание, что конкретная проблема, как упоминалось ранее, уже устранена, и что увеличение тайм-аута не помогает решить конкретную проблему, с которой вы столкнулись. Поэтому я и прошу репродукции 🙏.
Мы очень рады разобраться в этом и потратить на это время.
Вчера я создал новый проект, и он отлично работал. В моем проекте должно быть что-то конкретное, из-за чего он не работает. Позже сегодня я постараюсь постепенно разобрать его и посмотреть, когда проблема исчезнет.
Я бы с удовольствием посмотрел, сможете ли вы его достоверно воспроизвести.
Хорошая новость в том, что мне удалось точно определить ошибку. Плохая новость заключается в том, что проблема с моим проектом ничем не отличалась от того, о чем сообщили другие люди в этой ветке.
Итак, если проблема связана с CSS и лимитом удаления, и она предположительно была решена, я, должно быть, делаю что-то не так. Это куда вы положили?
module.exports = withCSS({
onDemandEntries: {
maxInactiveAge: 1000 * 60 * 60
}
})
Воспроизведение: https://github.com/dydokamil/next-js-router-bug
@dydokamil
Известная ошибка: https://github.com/zeit/next-plugins/issues/282
Вы можете "решить" эту проблему, импортировав пустой файл CSS.
Я могу заставить это надежно воспроизводиться в режимах разработки, производства и статического экспорта, и ни один из обходных путей onDemandEntries
или пустого файла css не помог.
Единственный способ решить эту проблему - удалить import 'highlight.js/styles/color-brewer.css';
из компонента Body на страницах моих сообщений в блоге.
Любой экземпляр <Link>
, указывающий на страницу сообщения в блоге, не загрузится, но http://localhost:3000/_next/static/development/pages/post.js
все равно будет сброшен на страницу при нажатии <Link>
. Закомментируйте этот импорт css, <Link>
s, чтобы сообщения в блоге работали perf. Раскомментируйте, и все <Link>
не смогут загрузить сообщения в блоге.
Нажатие на любой из этих маршрутов страницы сообщений в блоге напрямую работает нормально, ошибка связана только с клиентской стороной. маршрутизация на основе. Произошло это после обновления с версии 6 до версии 8.
Сначала я ударил это с помощью @zeit/next-css
но я могу воспроизвести эту проблему таким же образом после замены @zeit/next-sass
и импорта файла .scss. Пока я просто загружаю эти стили, используя styled-components
drop @zeit/next-css
. После просмотра https://www.npmjs.com/package/@zeit/next -css и https://www.npmjs.com/package/@zeit/next -sass кажется, что эти примеры использования сломаются 🤔
Не могли бы вы добавить репозиторий репродукций на https://github.com/zeit/next-plugins/issues/282
То, что вы описываете, похоже на эту проблему.
Я могу заставить это надежно воспроизводиться в режимах разработки, производства и статического экспорта, и ни один из обходных путей
onDemandEntries
или пустого файла css не помог.Единственный способ решить эту проблему - удалить
import 'highlight.js/styles/color-brewer.css';
из компонента Body на страницах моих сообщений в блоге.Любой экземпляр
<Link>
, указывающий на страницу сообщения в блоге, не загрузится, ноhttp://localhost:3000/_next/static/development/pages/post.js
все равно будет сброшен на страницу при нажатии<Link>
. Закомментируйте этот импорт css,<Link>
s, чтобы сообщения в блоге работали perf. Раскомментируйте, и все<Link>
не смогут загрузить сообщения в блоге.Прямое попадание в любой из этих маршрутов страницы сообщений в блоге работает нормально, ошибка связана только с маршрутизацией на стороне клиента. Произошло это после обновления с версии 6 до версии 8.
Сначала я ударил это с помощью
@zeit/next-css
но я могу воспроизвести эту проблему таким же образом после замены@zeit/next-sass
и импорта файла .scss. Пока я просто загружаю эти стили, используяstyled-components
drop@zeit/next-css
. После просмотра https://www.npmjs.com/package/@zeit/next -css и https://www.npmjs.com/package/@zeit/next -sass кажется, что эти примеры использования сломаются 🤔
После добавления пакета next / css я могу подтвердить, что это случилось и со мной.
То же самое произошло со мной при разработке (производство работает, как ожидалось), и проблема в том, что мы ссылаемся на страницы (или располагаем внутри компонентами), которые импортируют файлы sass.
Мой next.config.js
файл:
const withSass = require('@zeit/next-sass');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
require('dotenv').config();
module.exports = withBundleAnalyzer(
withSass({
distDir: '../dist',
env: {...},
}),
);
Итак, один из компонентов в глубине имеет этот импорт:
// MIGRATE: PriceDetail to styled components
import './PriceDetail.scss';
Когда я комментирую импорт, ссылка начинает работать. Так что, похоже, проблема с плагином withSass
.
У меня похожая проблема, но не такая. К сожалению, у меня такая же ошибка
в производстве тоже. Но по некоторым причинам ссылки иногда работают.
Я столкнулся с той же проблемой со следующими 9.4
Вчера я добавил CodeMirror
в свой проект, а также
import "codemirror/lib/codemirror.css"
У меня есть что-то вроде pages / page2.js, который что-то делает, затем вызывает router.replace("/")
в конце и просто внезапно перестает что-либо делать.
Запуск router.replace("/")
в отладчике показал обещание, которое никогда не разрешает и не достигает блоков catch
или finally
.
Также, возможно, стоит отметить, что у меня есть next-css в моем next.config.js - я попытаюсь удалить его и посмотреть, не повлияет ли это.
Похоже, здесь есть исправление? знак равно
Ага, это исправило для меня кое-что - мне, очевидно, также пришлось перенести мой импорт в файл оболочки _app.js
.
Самый полезный комментарий
Я исследую эту проблему прямо сейчас.