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 ) /public
zu ./public
public
/static
/static
static
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/currentstatic
statt in gesucht wurde /var/app/current/static
.