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

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

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

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables