Estoy usando las funciones de la nube de Google con express js para servir algunos archivos HTML. Mis archivos js no aparecen en el navegador. Dice 404 no encontrado.
Mi estructura de carpetas
Mi archivo HTML:
<html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <script type="module" src="/public/js/auth.js"></script> </head> <body> <div class="content__container"> <h1>Hello world</h1> </div> <script src="/public/js/main.js"></script> </body> </html>Mi aplicación.js
const functions = require("firebase-functions"); const express = require("express"); const path = require("path"); const app = express(); app.use("/js", express.static(path.join(__dirname, "public/js"))); exports.admin = functions.https.onRequest((req, res) => { res.sendFile(path.join(__dirname, "public", "admin.html")); }); El error en el navegador cuando invoco la función de nube admin
Directorio de funciones
Creo que olvidaste declarar la aplicación en tu archivo js
const app = express();En su archivo HTML:
<script src="./js/main.js"> Si js es su directorio estático/público:
<script src="./main.js">Además, en su archivo js:
res.sendFile(path.join(__dirname, "admin.html"));¿Desde dónde ha expuesto la aplicación Express? Debe haber una función HTTP que debería verse así:
const app = express() app.use("/js", express.static(path.join(__dirname, "public/js"))); exports.api = functions.https.onRequest(app); // This is missing? or you are not requesting at this URLCuando agrega la función anterior, su archivo JS debería estar disponible en la siguiente URL:
'http://localhost:5001/photography-5b191/us-central-1/api/js/main.js' // notice the function name ('api' in this case) ---->^^^Falta el nombre de la función que ha expuesto la aplicación Express en la URL del registro de red que ha compartido.