next.js - structure de répertoire du site exporté

en espérant qu'un magicien Next.js puisse m'aider, ou du moins me dire franchement si ce n'est pas possible.

Nous avons un site qui est compilé dans des fichiers statiques. Ceux-ci seront desservis à partir de S3.

Lorsque j'exécute next export, tout se construit correctement, mais j'avais espéré pouvoir accéder directement aux sous-pages sans ajouter l'extension.html. J'ai supposé (à tort) que les pages suivantes étaient construites dans des répertoires et j'ai déposé un index.html dans ce répertoire.

La configuration côté développement est assez simple. Chaque composant a un répertoire, par exemple "some-component", avec un index.js qui exporte le composant nommé à partir d'un fichier adjacent comme "some-component.js".

Tout cela fonctionne si je commence à la racine du site - je peux naviguer vers, par exemple, /components/some-component sans me soucier de l'extension.

Next a créé un some-componentrépertoire, mais le fichier à l'intérieur s'appelle toujours some-component.html. Donc, si je clique sur cette URL depuis le navigateur, il s'agit évidemment de 404.

Existe-t-il un moyen d'obtenir ensuite des fichiers index.html dans les répertoires, afin que la navigation directe dans le répertoire (essayez de le dire après un verre) fonctionne ? Ou suis-je en train d'aboyer le mauvais arbre?

Je sais qu'il existe d'autres solutions à cela, en particulier pour s3, mais j'ai pensé que cela valait la peine de poser des questions.

Acclamations!


Solution du problème

Next.js a un trailingSlashparamètre qui devrait fonctionner pour vous :

// next.config.js
module.exports = {
trailingSlash: true,
}

Lorsque ce paramètre est true, et en utilisant quelque chose comme ./pages/products/shoes.jsxcomme exemple, un répertoire nommé d'après le .jsxfichier ( shoes) est créé et ce .jsxfichier devient alors un index.htmlfichier à l'intérieur de ce répertoire, c'est-à-dire href="/products/shoes/". Votre serveur enverra ce chemin index.html(ou peut être configuré s'il ne le fait pas déjà) même s'il index.htmln'est pas spécifié dans le fichier href.

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"