AWS Elastic Beanstalk 不會從公共資料夾載入 Nodejs 應用程式的靜態文件

AWS Elastic Beanstalk 不會從公共資料夾載入 Nodejs 應用程式的靜態文件

靜態檔案配置(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.

相關內容