AWS Elastic Beanstalk lädt keine statischen Dateien aus dem öffentlichen Ordner für die NodeJS-App

AWS Elastic Beanstalk lädt keine statischen Dateien aus dem öffentlichen Ordner für die NodeJS-App

staticfiles.configDatei (NodejsPlayGround\ .elasticbeanstalk\staticfiles.config)

option_settings:
aws:elasticbeanstalk:container:nodejs:staticfiles:
/public: public

index.hbsDatei (NodejsPlayGround\views\index.hbs)

<!DOCTYPE html>
<html>
<head>
<title>NodeSeverTest</title>
<script src="js/client.js"></script>
</head>
<body>
<h1>Hello</h1>
</body>
</html>

server.jsDatei (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);
});

client.js(NodejsPlayGround\public\js\client.js) Datei:

console.log('client side java script file is loaded');

Wenn ich dies jetzt mit eb deploy bereitstelle, wird client.js nicht geladen und gibt einen 404-Fehler zurück (Ressource konnte nicht geladen werden: Der Server hat in index.hbs mit dem Status 404 (Nicht gefunden) geantwortet).

Ich habe alle Schritte im Internet ausprobiert und zwei Tage damit verschwendet.

Kann mir hier jemand helfen? Ist das ein Fehler oder mache ich hier etwas falsch?

Antwort1

Ich finde , dass im Gegensatz zur AWS-Dokumentation dazu auch der Ordnerpfad mit einem Schrägstrich am Anfang versehen werden muss, d. h. Sie ordnen (nicht nur ) oder (nicht nur ) /publiczu ./publicpublic/static/staticstatic

Ich habe dies herausgefunden, indem ich das Nginx-Fehlerprotokoll und die Konfigurationsdateien meiner EB-Instanzen überprüft habe. Beide haben gezeigt, dass nach meinen statischen Dateien in /var/app/currentstaticstatt in gesucht wurde /var/app/current/static.

verwandte Informationen