Después de enviar mi compromiso inicial a github, experimenté un error 404 al intentar ver el enlace de la página de github. Me di cuenta de que se debía a que había usado enlaces relativos a la raíz para cada href y src en mi proyecto. Necesito una forma de agregar mi nombre de repositorio de github a todos los href y src.
Cualquier ayuda es apreciada.
dentro de mi archivo index.html tengo un script para agregar mi nombre de repositorio a todos los src y href - el nombre del repositorio es /Test_App
<script> $(function () { $('src').attr('src', '/Test_App').each(); $('href').attr('href', '/Test_App').each(); }); </script>Es un problema frustrante, ¿no? La solución que uso en este momento consiste en configurar localmente un servidor de nodo Express simple que redirige las solicitudes internamente de una manera que ignora la parte /${projectName} al comienzo de la URL de las páginas de GitHub. Con este enfoque, puedo usar las mismas rutas que GitHub Pages cuando ejecuto el proyecto localmente y funcionarán correctamente en ambos entornos.
He documentado mi enfoque en el repositorio de mi proyecto base en GitHub, si quieres echarle un vistazo. Aquí está la sección específica en el archivo Léame sobre las páginas de GitHub .
Estoy usando un archivo .env y el proyecto dotenv para configurar el nombre del proyecto, pero podría codificarlo con la misma facilidad.
En caso de que ese enlace falle algún día, aquí está el código del servidor que estoy usando, que es la parte importante de esta solución:
import dotenv from 'dotenv'; dotenv.config(); import express from 'express'; const app = express(); const port = process.env.PORT; const projectName = process.env.PROJECT_NAME; app.use(express.static('app')); if (projectName) { // GitHub Pages publishes projects to <username>.github.io/<projectname> // This breaks root-relative URLs, so instead use "/projectname/path/" locally // and resolve it by redirecting it here to a root relative path. let ghPagesPathPattern = new RegExp(`^/${projectName}/`, 'i'); app.get(ghPagesPathPattern, (req, res) => { let url = req.url.replace(ghPagesPathPattern, '/'); url = `http://${req.headers.host}${url}`; res.redirect(url); }); } app.listen(port, () => {}); console.log(`Listening on port ${port}`);