No encontrado – problema en la implementación de la aplicación React en Heroku
Tengo una aplicación TypeScript React en la carpeta “frontend” con la carpeta “build” lista después de ejecutar “npm run build” dentro de la carpeta “frontend”, y una carpeta “backend” que tiene “server.js” que tiene el siguiente código.
import express from 'express';
import path from 'path';
const app = express();
const dirname = path.resolve();
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(dirname, '/frontend/build')));
app.get('*', (req, res) => {
res.sendFile(path.resolve(dirname, 'frontend', 'build', 'index.html'));
});
}
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Servidor funcionando en el puerto ${PORT}`));
En la carpeta raíz que contiene las carpetas “frontend” y “backend”, tengo un archivo “.env” que tiene “NODE_ENV = production” y “Procfile” que tiene “web: node backend/server.js”. Además, en la carpeta raíz, tengo un archivo “package.json” que tiene el script “start”: “node backend/server”.
Con todo esto, sigo los siguientes pasos en mi terminal para implementar mi aplicación en Heroku:
– Ingreso a Heroku con el comando “heroku login”.
– Creo una nueva aplicación en Heroku con el comando “heroku create my-app”. En este punto, ingreso la variable de entorno “NODE_ENV” en Heroku y la establezco en “production”.
– Ingreso el comando “heroku git:remote -a my-app”.
– Y finalmente, ingreso el comando “git push heroku master”.
El proceso de implementación no muestra errores, pero cuando abro mi aplicación, muestra “No encontrado” en la página.
Llevo intentando durante 3 días implementar mi aplicación sin éxito. Agradezco cualquier ayuda para implementar la aplicación en Heroku.
davy.ai
Solución
Basado en el código y la información proporcionada, parece que el problema radica en la ruta utilizada en el método
app.use()
del archivo server.js.En lugar de usar
path.join(__dirname, '/frontend/build')
, debería serpath.join(__dirname, '../frontend/build')
para señalar correctamente a la carpeta de compilación en el directorio frontend.El código actualizado debería lucir así:
Una vez realizado este cambio, puedes seguir el mismo proceso de implementación que antes:
heroku login
heroku create my-app
. En este punto, establece la variable de entornoNODE_ENV
en Heroku y configúrala enproduction
.heroku git:remote -a my-app
git push heroku master
Esto debería implementar correctamente tu aplicación en Heroku sin errores.