Firebase-mettre des fichiers dans plusieurs répertoires

j'essaie d'organiser mon projet pour le rendre plus soutenable. J'ai un grand nombre de modèles html et je suis obligé de les mettre tous dans le répertoire public. Je voulais vraiment l'organiser comme ceci

public directory
  views
    index.html
    register.html
    terms.html
    privacy.html
    support.html
  stylesheets
    styles.css
  scripts
    script.js
    authentication.js

mais au lieu de cela, il ressemble à ceci

public
  index.html
  register.html
  terms.html
  privacy.html
  support.html
  script.js
  authentication.js
  styles.css

Voici mon firebase.json le fichier

   {
  "firebase": "funmathgame",
  "public": "mathgame",
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ]
}

Voici le message d'erreur que j'obtiens

Page Introuvable

Le fichier n'existe pas et il n'y a pas de index.html trouvé dans le répertoire courant ou 404.html dans le répertoire racine.

pourquoi je vois ça?

vous avez peut-être déployé le mauvais répertoire pour votre application. Vérifiez votre firebase.json et assurez-vous que le public répertoire pointant vers un répertoire qui contient un index.html fichier.

Vous pouvez aussi ajouter un 404.html dans la racine de votre site pour remplacer cette page par une page d'erreur personnalisée.

le la première structure est meilleure parce qu'elle sépare le code. Cette structure travaille chaque fois que j'exécute les fichiers dans mon éditeur de texte. Cependant, cela ne fonctionne pas chaque fois que je me déploie à firebase.

à titre d'exemple, voici comment je ferais référence à mes feuilles de style

<head>
  <title>Frequently Asked Questions</title>
  <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'> 
  </link>
<link rel='stylesheet' href='../stylesheets/styles.css'></link>

dans la structure de répertoire ci-dessus, je suis dans le public/views répertoire. J'utilise .. pour revenir à un répertoire dans le répertoire public et ensuite avancer dans le répertoire stylesheets. Cependant, voici mon index.html le fichier n'est pas dans le répertoire public, mais plutôt le public/views répertoire.

j'ai regardé le site de Firebase, mais je ne trouve toujours aucune idée.

https://www.firebase.com/docs/hosting/guide/full-config.html

25
demandé sur heenenee 2016-01-16 19:14:06
la source

3 ответов

Si vous êtes prêt à avoir /views/index.html dans votre application barre d'adresse, vous pouvez simplement faire une redirection à partir d' / en ajoutant un redirects pour votre firebase.json. En outre, il semble comme votre public attribut peut être incorrect. Alors changez votre firebase.json fichier:

{
  "firebase": "funmathgame",
  "public": "public",
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ],
  "redirects": [
    {
      "source": "/",
      "destination": "/views/index.html",
      "type": 302
    }
  ]
}

de cette façon, tout utilisateur qui va à https://funmathgame.firebaseapp.com/ sera redirigé vers https://funmathgame.firebaseapp.com/views/index.html

C'est un problème difficile pour vous. Lorsque vous déployez vers Firebase, Firebase recherche un index.html fichier à l'intérieur de votre répertoire public. Ce répertoire public est aussi connu sous le répertoire racine.

je travaillais avec une application angulaire, et j'utilisais simplement les mauvais chemins dans mes partiels. Cela a été assez compliqué cependant.

j'ai dû mettre en place un angulaires contrôleur, qui a injecté le $document dépendance pour obtenir le titre d'une page. Si le titre de la page correspond au titre de la page racine, j'utiliserais ng-href pour ajouter le views répertoire de l'url relative.

Sinon, si vous étiez dans le répertoire des vues, et que vous cherchiez plus de vues, il afficherait un chemin comme views/views/page1.html. C'est pour ça que nous aurions un autre ng-href conditionnel pour ces.

voici à quoi ressemblait ma navigation

<ul class='nav navbar-nav'>

        <li><a ng-href="{{ page == home ? 'views/help.html' : 'help.html' }}">Help</a></li>
        <li><a ng-href="{{ page == home ? 'views/achievements.html' : 'achievements.html' }}">Achievements</a></li>
        <li><a ng-href="{{ page == home ? 'views/scores.html' : 'scores.html' }}">Scores</a></li>
        <li><a ng-href="{{ page == home ? 'views/shop.html' : 'shop.html' }}">Shop</a></li>
        <li><a ng-href="{{ page == home ? 'views/faq.html' : 'faq.html' }}">FAQs</a></li>
        <li><a ng-href="{{ page == home ? 'views/related.html': 'related.html' }}">More Games</a></li>
</ul>

a la fin, ma structure de répertoire ressemblait à ceci

public
  assets
    stylesheets
      styles.css
  views
    partials
      scripts.html
      header.html
      footer.html
    page1.html
    ...
  scripts
    controllers
    script1.js
    ...
  index.html

Il est possible de placez le fichier index dans le répertoire views, si vous changez la base de données firebase.fichier json.

{
    "firebase": "firebase-app",
    "public": "root/views",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
}

il suffit de changer le mot-clé public dans l'application firebase. Ça a pris beaucoup de temps, parce que j'ai oublié que je devais changer les chemins. En outre, pour naviguer de nouveau dans le répertoire précédent vous devriez faire quelque chose comme ../

8
répondu Richard Hamilton 2016-02-01 21:27:06
la source

je pense que ce site peut vous aider: https://www.firebase.com/blog/2014-08-12-switching-to-firebase.html

Surtout

depuis que Firebase importe un seul fichier et que certains services exportent plusieurs fichiers, j'ai créé un script Python très pratique qui convertira plusieurs fichiers en un seul fichier, assaini par Firebase.

2
répondu Vin 2016-02-07 20:47:22
la source

Autres questions sur