AWS Elastic Beanstalk не загружает статические файлы из публичной папки для приложения nodejs

AWS Elastic Beanstalk не загружает статические файлы из публичной папки для приложения nodejs

статическиефайлы.config(NodejsPlayGround\ .elasticbeanstalk\staticfiles.config) файл

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

индекс.hbs(файл NodejsPlayGround\views\index.hbs)

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

сервер.jsФайл (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);
});

клиент.jsФайл (NodejsPlayGround\public\js\client.js):

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

Теперь, когда я развертываю это с помощью eb deploy, client.js не загружается и возвращает ошибку 404 (Не удалось загрузить ресурс: сервер ответил со статусом 404 (Не найдено) в index.hbs).

Я перепробовал все шаги, которые есть в интернете, и потратил на это два дня.

Может ли мне кто-нибудь помочь? Это баг или я что-то не так делаю?

решение1

Я обнаружил, что вопреки документации AWS по этому поводу, путь к папке также должен начинаться с косой черты — т. е. вы сопоставляете /publicс /public(не просто public), или /staticс /static(не просто static).

Я выяснил это, проверив журнал ошибок nginx и файлы conf на моих экземплярах EB, и оба показали, что он искал мои статические файлы /var/app/currentstaticвместо /var/app/current/static.

Связанный контент