AWS Elastic Beanstalk no carga archivos estáticos desde la carpeta pública para la aplicación nodejs

AWS Elastic Beanstalk no carga archivos estáticos desde la carpeta pública para la aplicación nodejs

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 /publica /public(no solo public) o /statica /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/currentstaticlugar de /var/app/current/static.

información relacionada