1

Après avoir regardé Node.js apps on Firebase Hosting, j'ai essayé de créer un projet avec Polymer et NodeJs/express et firebase hosting.
Dans la vidéo liée, il est montré que Firebase servirait par défaut le fichier static public/index.html, c'est pourquoi ils l'enlèvent pour ensuite servir un fichier dynamique. Cependant, ce fichier particulier se trouve dans le même répertoire de fonctions et n'est plus placé dans le dossier public. Cela signifie-t-il que tout mon projet doit être placé dans le dossier des fonctions ou simplement dans le point d'entrée de l'application? Je ne suis pas en mesure d'envoyer un fichier qui est placé dans mon dossier public comme indiqué ci-dessous.Impossible de référencer le dossier public du déploiement node.js avec firebase

  • projet
    • fonctions
      • server.js
    • publics
      • index.html


app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, '/public/index.html')); 
}) 

Je crois que firebase héberge le dossier public et la fonction différemment ou suis-je référencement tout simplement faux?

Répondre

3

Vous aurez besoin de votre nid public dossier dans le dossier functions pour pouvoir référencer des fichiers à partir dans vos fonctions. Vous pouvez le faire simplement en modifiant le paramètre public dans firebase.json pour être par exemple. functions/public puis en déplaçant le répertoire à l'intérieur de functions.

Vous seriez alors capable de faire quelque chose comme vous le décrivez.

+0

Très bien, c'est ce que je pensais. Je ne savais pas si c'était la bonne façon ou si je manquais quelque chose. Une chose que je ne comprends pas, à la fin de la vidéo, il lie une feuille de style du dossier public à l'index qui est placé dans le dossier des fonctions, car il veut séparer les éléments statiques – Niklas

+1

En général, vous ne devriez pas utiliser Cloud Fonctions permettant de dupliquer les fonctionnalités offertes par Firebase Hosting en mode natif. Donc, si vous cherchez juste à servir 'index.html' de tous les chemins, vous devriez utiliser un [réécrire] (https://firebase.google.com/docs/hosting/url-redirects-rewrites#section-rewrites) au lieu. –

+0

J'avais auparavant des fonctions + split public selon le tutoriel - j'avais alors un fichier contenant des routes à l'intérieur des fonctions où j'appelais res.render(). Dans certains cas, il trouverait correctement mon style.css à l'intérieur du public, et d'autres fois il essayerait de retirer style.css depuis le même répertoire que la route. Pourquoi cela fonctionnerait-il dans certains cas et pas dans d'autres? (Est-ce que ce devrait être une question distincte?) Merci d'avance! – Jordan