Soit Link
ou Router
cesse de fonctionner lors du routage côté client. Il semble que HMR puisse interrompre la transition entre les pages. Cela se produit le plus souvent si l'application est laissée inactive ou en arrière-plan pendant un certain temps (bien que j'aie vécu cela en cliquant sans qu'elle soit inactive)
Étapes pour reproduire le comportement, veuillez fournir des extraits de code ou un référentiel:
npm install
npm run dev
J'espère pouvoir visiter toutes les pages individuelles
La page ne navigue pas vers certains itinéraires. L'actualisation de la page résoudra le problème
Les liens «à propos» et «contact» ne fonctionnent pas (notez le journal HMR à la première tentative de chaque itinéraire). Après une actualisation de la page, ils fonctionnent comme prévu. Si je laisse l'application inactive pendant environ 2 minutes, elle recommencera avec le problème
Avec la console ouverte, vous pouvez voir que l'événement Router routeChangeStart
déclenche mais que routeChangeComplete
ne le fait jamais.
J'ai le même problème
Je vois également cela dans un environnement de production, donc je ne suis pas sûr que HMR soit le seul responsable du problème
@ernerock J'ai déployé l'exemple ci-dessus ici mais le problème ne semble pas se produire une fois en direct. Avez-vous pu reproduire dans un environnement de production?
@malimccalla Il semble que mon problème soit différent du vôtre, mais le comportement de navigation est le même. Lorsque la page vers laquelle je navigue a une importation CSS
import 'react-alice-carousel/lib/alice-carousel.css';
le comportement de navigation est le même que celui que vous avez signalé. Semble être un problème avec '@ zeit / next-css'
Semble déjà signalé dans # 5291, peut être `` résolu '' temporairement en important et vide le fichier css dans _app.js
@ernerock Très étrange, ils peuvent être liés d'une manière détournée!
Même problème ici, j'ai des pages configurées comme / home et / home / subpage, alors si j'essaie de naviguer de / home vers / home / sous-page avec Router.push, ou avecRouter HOC ou même Link, cela ne fonctionne pas.
OK maintenant j'ai quelques informations supplémentaires, j'ai essayé de renommer / home en / home / welcome et le cas décrit ci-dessus ne fonctionne toujours pas pour moi
@ maciej-ka Ah oui je peux confirmer que ça arrive aussi avec push
ce n'est pas seulement Link
. Va changer le titre, car c'est un peu trompeur.
@timneutkens Désolé pour @ vous Je sais qu'il y a plein d'autres problèmes, mais est-ce que nous pouvons avoir des yeux là-dessus? J'essaye d'aller au fond des choses depuis une semaine maintenant sans chance et cela bloque vraiment le développement
C'est probablement lié aux entrées à la demande et à leur élimination
J'ai fait un peu de fouille et il semble que cela soit dû au fait que les pages sont éliminées. Dès que ce journal apparaît, les pages supprimées ne peuvent plus être consultées
> Disposing inactive page(s): /
J'ai un peu de temps ce soir pour approfondir mes connaissances et j'espère pouvoir ouvrir un PR pour résoudre le problème. @timneutkens Merci pour le premier aperçu, faites-moi savoir si vous pensez qu'il y a une partie de ce fichier que je devrais examiner en particulier
J'ai essayé de résoudre ce problème, mais il se passe beaucoup de choses dans les fichiers associés et malheureusement, je n'ai pas pu aller au fond des choses. Pour toute autre personne ayant ce problème, en tant que solution de contournement actuelle, j'utilise cette configuration dans mon next.config.js
pour prolonger la durée avant que les pages ne soient supprimées.
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,
},
J'ai aussi ce problème.
Est-ce que quelqu'un examine cela? J'ai aussi ce problème mais pas nécessairement à toutes les routes. Les routes / routes qui ne répondent plus sont aléatoires, mais elles finissent toutes par le faire.
Je ne peux pas l'examiner pour le moment car je me concentre sur le problème du prochain serveur / lambdas, mais il est très probablement lié aux entrées à la demande.
Oui, c'est sûr. Se produit après l'élimination.
Pareil pour moi.
Quelqu'un peut-il me confirmer que ce n'est pas un problème de production?
Quelqu'un peut-il me confirmer que ce n'est pas un problème de production?
En mode production, tout va bien, après avoir changé ENV en production, tout va bien
Je l'ai à la fois en développement et en production. Peu importe si la page est inactive, etc. Je peux avoir une nouvelle charge et cela ne fonctionnera pas. En dev, la console du serveur
> Building page: /contact
WAIT Compling...
success client complied in 462ms
mais la page ne s'affiche jamais dans le client. En même temps, sur la console client:
[HMR] bundle rebuilding
message, puis la console du serveur donne:
Disposing of inactive page(s): /, /contact
Si je tape mysite.com/contact dans le navigateur, il se chargera très bien.
J'ai essayé le travail autour de next.config.js
de maxInactiveAge
et pagesBufferLength
en vain.
[espérait que c'était juste en développement comme beaucoup le disaient]
EDIT: J'ai eu un import 'node-mod/dist/theme.css
dans un composant. J'ai déplacé cette importation vers _app.js
et ce Link
fonctionne.
Même problème ici, l'itinéraire ne se termine pas en mode développement après l'élimination. C'est vraiment ennuyeux.
@roytsang Au lieu de dire "même problème", utilisez 👍 sur le problème. Votre manuel +1
ne finit pas par être pris en compte lors du tri sur 👍
J'ai le même problème. Cela n'a commencé aujourd'hui qu'après avoir commencé à utiliser Head from next / head dans mon _app pour appliquer un titre et un favicon.
@Atmospheres avez-vous essayé la solution de contournement @malimccalla ? Ce n'était pas une solution totale mais a fonctionné pour moi comme une solution de contournement.
Je n'ai pas encore compris, mais je le ferai bientôt. J'ai juste pensé que plus d'informations sur le moment où le problème se posait pour moi pourraient être utiles à quelqu'un qui cherche un correctif.
Mise à jour: J'ai fait des tests ce matin et voici ce que j'ai rencontré.
Les problèmes ont commencé hier, la seule nouveauté que j'avais implémentée est le Head from next. J'ai réalisé que j'avais changé la tête dans _document, utilisée pour charger dans les styles, en Tête. J'ai également ajouté Head à _app.js pour définir le titre et le favicon. La suppression de Head dans _app.js n'a pas résolu ce problème pour moi. La suppression de Head dans _app et _document n'a pas non plus résolu le problème. J'ai essayé une dernière chose, j'ai retourné Head dans _document à la tête et laissé la tête dans _app pour définir le titre et le favicon, et maintenant le problème est parti.
Si pour une raison quelconque le problème revient, je mets à jour ici à nouveau. J'espère que cette information pourrait vous aider à résoudre le problème.
Mise à jour 2: Le problème persiste, même s'il survient moins fréquemment qu'il ne l'a fait. J'ai remarqué que lorsque cela se produit, je vois la balise de script qui charge les js pour cette page est dupliquée. Par exemple, la première fois que je charge la page "x", elle ajoute 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.
Je n'ai pas encore compris, mais je le ferai bientôt. J'ai juste pensé que plus d'informations sur le moment où le problème se posait pour moi pourraient être utiles à quelqu'un qui cherche un correctif.
Mise à jour: J'ai fait des tests ce matin et voici ce que j'ai rencontré.
Les problèmes ont commencé hier, la seule nouveauté que j'avais implémentée est le Head from next. J'ai réalisé que j'avais changé la tête dans _document, utilisée pour charger dans les styles, en Tête. J'ai également ajouté Head à _app.js pour définir le titre et le favicon. La suppression de Head dans _app.js n'a pas résolu ce problème pour moi. La suppression de Head dans _app et _document n'a pas non plus résolu le problème. J'ai essayé une dernière chose, j'ai retourné Head dans _document à la tête et laissé la tête dans _app pour définir le titre et le favicon, et maintenant le problème est parti.
Si pour une raison quelconque le problème revient, je mets à jour ici à nouveau. J'espère que cette information pourrait vous aider à résoudre le problème.
Mise à jour 2: Le problème persiste, même s'il survient moins fréquemment qu'il ne l'a fait. J'ai remarqué que lorsque cela se produit, je vois la balise de script qui charge les js pour cette page est dupliquée. Par exemple, la première fois que je charge la page "x", elle ajoute 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 :)
J'étudie ce problème en ce moment.
Résolu dans # 5994
Est-il possible de nous indiquer quel était le problème et comment nous pourrions le contourner si nous ne pouvons pas mettre à niveau maintenant? Par exemple, est-ce à voir avec le chargement css? Est-ce quelque chose qui peut être changé dans la configuration?
@ jon64digital J'ai écrit une description complète de ce problème dans # 5994, vous pouvez le contourner en augmentant le délai d'élimination.
@timneutkens J'utilise 8.1.1-canary.24
et le bogue existe toujours pour moi. Une idée?
Edit: découvrez ce qui se passe. Je ne sais pas pourquoi tho ...:
J'avais un fichier index.tsx et index.less. J'utilisais cssModules dans mon fichier netxt.config.js (en utilisant withLess). Lors du chargement d'un /subpage
et d'avoir un lien qui référence /
(qui importe des styles comme celui-ci: import css from './index.less';
), le script sera chargé dynamiquement ( http://localhost:3000/_next/static/development/pages/index.js
) mais il n'est pas rendu. En fait, l'URL ne change pas du tout, c'est comme si elle était bloquée ... La suppression de l'importation de fichiers moins a résolu le problème.
Que faire?
Edit2: Il semble que je rencontre https://github.com/zeit/next-plugins/issues/282
Je reçois toujours cela se produit parfois aussi sur 8.1.0
. J'essaierai de reproduire et d'ouvrir un nouveau numéro
pour moi aussi, ce n'est pas naviguer vers / à propos de la route donne 404 à chaque fois! ne sais pas quel est le problème avec le routage !? : /
dépendances 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 veuillez toujours fournir une reproduction complète. Il est impossible de se pencher sur "qui arrive pour moi"
@jsbimra veuillez toujours fournir une reproduction complète. Il est impossible de se pencher sur "qui arrive pour moi"
trouvé un problème, il était lié à une étape manquante dans la création d'une page sous le dossier de page de next.js, désolé de déranger @timneutkens
une solution pour cela? cela arrive-t-il aussi en production? car en dev cela m'arrive, le bogue est de 2018 et le 22 mai 2019, ce bogue n'a toujours pas été corrigé, si cela ne se produit pas en production, je ne suis pas si concerné, mais si cela arrive, c'est un très gros problème ...
le bogue vient de 2018 et du 22 mai 2019, ce bogue n'a toujours pas été corrigé
Basé sur la reproduction fournie par @malimccalla, il a été corrigé.
si cela ne se produit pas en production, je ne suis pas si inquiet
Ce n'est pas le cas.
Notez que ce commentaire ne résoudra pas votre problème. Comme dit plusieurs fois auparavant:
veuillez toujours fournir une reproduction complète. Il est impossible de se pencher sur "qui arrive pour moi"
J'ai le même problème avec la dernière version (8.1.0).
J'ai le même problème avec la dernière version (8.1.0).
J'ai maintenant répondu environ 3 fois avec exactement le même message. Veuillez fournir une reproduction .
Notez que ce commentaire ne résoudra pas votre problème. Comme dit plusieurs fois auparavant:
veuillez toujours fournir une reproduction complète. Il est impossible de se pencher sur "qui arrive pour moi"
J'ai été troublé par le problème de ne pas pouvoir accéder à ~ / index.tsx
.
Mais j'ai enfin trouvé la cause!
J'ai utilisé une bibliothèque appelée react-activity
, mais en même temps j'avais besoin d'importer du CSS.
Quand je lis deux fois le même css à différents endroits, il semble que je ne puisse pas migrer.
Suite à la lecture de _app.tsx
, j'ai pu migrer avec succès.
@timneutkens d' accord, bien sûr, je peux augmenter le temps d'élimination, mais qu'en est-il de la situation où le serveur est démarré pour la première fois? Je ne pourrai pas accéder à ces pages par programme car elles ne sont pas encore créées. 🤔
J'ai maintenant répondu environ 4 fois avec exactement le même message. Veuillez fournir une reproduction .
Notez que ce commentaire ne résoudra pas votre problème. Comme dit plusieurs fois auparavant:
veuillez toujours fournir une reproduction complète. Il est impossible de se pencher sur "qui arrive pour moi"
Pour répondre à la question spécifique, les pages sont créées à la demande et ce système fonctionne très bien. Je suppose que vous avez quelque chose dans votre configuration qui empêche Webpack de déclencher le fichier en tant que construction terminée. Cependant c'est difficile / impossible à dire car il n'y a pas de reproduction.
Notez également que le problème spécifique, comme mentionné précédemment, a déjà été résolu et que l'augmentation du délai d'attente n'aide pas pour le problème spécifique que vous rencontrez. D'où la raison pour laquelle je demande toujours une reproduction 🙏.
Nous sommes très heureux d'examiner cela et d'y consacrer du temps.
J'ai créé un nouveau projet hier et cela a très bien fonctionné. Il doit y avoir quelque chose de spécifique dans mon projet qui l'empêche de fonctionner. J'essaierai de le démonter progressivement plus tard aujourd'hui et de voir à quel point le problème disparaîtra.
J'adorerais jeter un coup d'œil si vous pouvez le reproduire de manière fiable.
La bonne nouvelle est que j'ai pu identifier l'erreur. La mauvaise nouvelle est que le problème avec mon projet n'était pas différent de ce que d'autres personnes, dans ce fil, ont rapporté.
Donc, si le problème est lié au CSS et à la limite d'élimination, et qu'il est censé être résolu, je dois faire quelque chose de mal. Est-ce là que vous les mettez?
module.exports = withCSS({
onDemandEntries: {
maxInactiveAge: 1000 * 60 * 60
}
})
Reproduction: https://github.com/dydokamil/next-js-router-bug
@dydokamil
C'est un bug connu: https://github.com/zeit/next-plugins/issues/282
Vous pouvez le «résoudre» en important un fichier CSS vide.
Je peux obtenir que cela se reproduise de manière fiable dans les modes de développement, de production et d'exportation statique et aucune des solutions de contournement onDemandEntries
ou de fichier css vide n'a aidé.
La seule façon de résoudre le problème était de supprimer import 'highlight.js/styles/color-brewer.css';
du composant Body sur les pages de mon blog.
Toute instance <Link>
qui pointait vers une page d'article de blog échouerait à se charger mais http://localhost:3000/_next/static/development/pages/post.js
serait toujours déposée sur la page sur <Link>
click. Commentez cette importation css, <Link>
s aux articles de blog work perf. Décommentez et tous les <Link>
ne parviennent pas à charger les articles de blog.
Accéder directement à l'un de ces itinéraires de page de blog fonctionne correctement, le bogue est uniquement lié au côté client routage basé sur. Cela s'est produit après la mise à niveau de la version 6 à la version 8.
J'ai d'abord frappé ceci avec @zeit/next-css
mais je peux répliquer ce problème de la même manière après avoir échangé @zeit/next-sass
et importé un fichier .scss. Pour l'instant, je ne fais que charger ces styles en utilisant styled-components
drop @zeit/next-css
. Après avoir examiné https://www.npmjs.com/package/@zeit/next -css et https://www.npmjs.com/package/@zeit/next -sass, il semble que ces exemples d'utilisation casseraient 🤔
Pourriez-vous ajouter un référentiel de reproduction à https://github.com/zeit/next-plugins/issues/282
Ce que vous décrivez ressemble exactement à ce problème.
Je peux obtenir que cela se reproduise de manière fiable dans les modes de développement, de production et d'exportation statique et aucune des solutions de contournement
onDemandEntries
ou de fichier css vide n'a aidé.La seule façon de résoudre le problème était de supprimer
import 'highlight.js/styles/color-brewer.css';
du composant Body sur les pages de mon blog.Toute instance
<Link>
qui pointait vers une page d'article de blog échouerait à se charger maishttp://localhost:3000/_next/static/development/pages/post.js
serait toujours déposée sur la page sur<Link>
click. Commentez cette importation css,<Link>
s aux articles de blog work perf. Décommentez et tous les<Link>
ne parviennent pas à charger les articles de blog.Le fait d'accéder directement à l'un de ces itinéraires de page de blog fonctionne correctement, le bogue n'est lié qu'au routage côté client. Cela s'est produit après la mise à niveau de la version 6 à la version 8.
J'ai d'abord frappé ceci avec
@zeit/next-css
mais je peux répliquer ce problème de la même manière après avoir échangé@zeit/next-sass
et importé un fichier .scss. Pour l'instant, je ne fais que charger ces styles en utilisantstyled-components
drop@zeit/next-css
. Après avoir examiné https://www.npmjs.com/package/@zeit/next -css et https://www.npmjs.com/package/@zeit/next -sass, il semble que ces exemples d'utilisation cassent 🤔
Après avoir ajouté le package suivant / css, je peux confirmer que cela m'est arrivé également.
La même chose m'est arrivée en développement (la production fonctionne comme prévu), et le problème est lorsque nous lions vers des pages (ou avons des composants à l'intérieur) qui importent des fichiers SASS.
Mon fichier 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: {...},
}),
);
Alors, l'un des composants en profondeur a cette importation:
// MIGRATE: PriceDetail to styled components
import './PriceDetail.scss';
Lorsque je commente l'importation, le lien commence à fonctionner. Cela semble donc être un problème avec le plugin withSass
.
J'ai un problème similaire mais pas le même. Malheureusement, j'obtiens la même erreur
en production aussi. Mais pour certaines raisons, les liens fonctionnent parfois.
J'ai rencontré le même problème avec le prochain 9.4
J'ai ajouté CodeMirror
hier à mon projet et aussi
import "codemirror/lib/codemirror.css"
J'ai quelque chose comme pages / page2.js qui fait des trucs puis appelle router.replace("/")
à la fin de cela et il a soudainement arrêté de faire quoi que ce soit.
L'exécution de router.replace("/")
dans le débogueur a montré une promesse qui ne résout ou n'atteint jamais les blocs catch
ou finally
.
Il est également intéressant de noter que j'ai next-css dans mon next.config.js - je vais essayer de le supprimer et voir si cela a un impact.
On dirait qu'il y a peut-être un correctif ici? =)
Aha, cela a résolu les choses pour moi - je devais évidemment aussi déplacer mon import dans un fichier shell _app.js
.
Commentaire le plus utile
J'étudie ce problème en ce moment.