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

时间:2019-05-23 10:15:45

标签: node.js amazon-web-services amazon-elastic-beanstalk ebcli

我已经使用aws eb deploy部署了nodejs应用程序,client.js没有加载到index.hbs文件中并返回404错误(无法加载资源:服务器响应状态为404(未找到))< / p>

我尝试了互联网的所有步骤,为此浪费了两天。

有人可以在这里帮助我吗?我在这里做错什么了?

我已经在此stackover流页面Elastic Beanstalk Static Folder 403 Error中尝试过该解决方案,但是没有运气

staticfiles.config (NodejsPlayGround.elasticbeanstalk \ staticfiles.config)文件

选项设置:

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

index.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>

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

client.js (NodejsPlayGround \ public \ js \ client.js)文件:

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

client.js文件需要加载到index.hbs文件中

1 个答案:

答案 0 :(得分:0)

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

我通过检查EB实例上的nginx错误日志和conf文件来弄清这一点,并且都表明它正在static中而不是/var/app/currentstatic中查找我的静态文件。