archivos estáticos.configArchivo (NodejsPlayGround\ .elasticbeanstalk\staticfiles.config)
option_settings:
aws:elasticbeanstalk:container:nodejs:staticfiles:
/public: public
index.hbsArchivo (NodejsPlayGround\views\index.hbs)
<!DOCTYPE html>
<html>
<head>
<title>NodeSeverTest</title>
<script src="js/client.js"></script>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
servidor.jsArchivo (NodejsPlayGround\server.js)
'use strict';
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
const views_path = path.join(__dirname, 'views');
const static_path = path.join(__dirname, 'public')
app.set('view engine', 'hbs');
app.set('views', views_path);
app.get('', (req, res) => {
res.render('index', {
title: 'Weather App',
name: 'ArunKumar Arjunan'
}
);
});
app.listen(port, () => {
console.log('server started on port ' + port);
});
cliente.jsArchivo (NodejsPlayGround\public\js\client.js):
console.log('client side java script file is loaded');
Ahora, cuando implemento esto con eb implementar, client.js no se carga y devuelve el error 404 (Error al cargar el recurso: el servidor respondió con un estado de 404 (No encontrado) en index.hbs.
Probé todos los pasos en Internet y perdí dos días en esto.
Me puede ayudar alguien ? ¿Es esto un error o estoy haciendo algo mal aquí?
Respuesta1
Encuentro que, contrariamente a la documentación de AWS sobre esto, la ruta de la carpeta también necesita una barra diagonal inicial, es decir, se asigna /public
a /public
(no solo public
) o /static
a /static
(no solo static
).
Descubrí esto inspeccionando el registro de errores de nginx y los archivos conf en mis instancias de EB, y ambos mostraron que estaba buscando mis archivos estáticos en /var/app/currentstatic
lugar de /var/app/current/static
.