AWS Elastic Beanstalk 不会从公共文件夹加载 Node.js 应用程序的静态文件

AWS Elastic Beanstalk 不会从公共文件夹加载 Node.js 应用程序的静态文件

静态文件.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 错误(无法加载资源:服务器在 index.hbs 中响应状态为 404(未找到)。

我已经尝试了互联网上的所有步骤,并为此浪费了两天时间。

有人能帮我吗?这是一个错误还是我做错了什么?

答案1

我发现与 AWS 文档相反,文件夹路径也需要一个前导斜杠 - 即,您映射/public/public(而不仅仅是public),或者/static映射到/static(不仅仅是static)。

我通过检查 EB 实例上的 nginx 错误日志和 conf 文件解决了这个问题,两者都表明它正在寻找我的静态文件而/var/app/currentstatic不是/var/app/current/static

相关内容