AWS Elastic Beanstalk는 nodejs 앱의 공용 폴더에서 정적 파일을 로드하지 않습니다.

AWS Elastic Beanstalk는 nodejs 앱의 공용 폴더에서 정적 파일을 로드하지 않습니다.

정적파일.config(NodejsPlayGround\ .elasticbeanstalk\staticfiles.config) 파일

option_settings:
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);
});

클라이언트.js(NodejsPlayGround\public\js\client.js) 파일:

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

이제 eb 배포를 사용하여 이를 배포하면 client.js가 로드되지 않고 404 오류가 반환됩니다(리소스 로드 실패: 서버가 index.hbs에서 404(찾을 수 없음) 상태로 응답했습니다.

나는 인터넷에서 모든 단계를 시도했지만 이를 위해 이틀을 낭비했습니다.

아무도 나를 도와줄 수 있나요? 이것은 버그인가요, 아니면 제가 여기서 뭔가 잘못하고 있는 건가요?

답변1

이에 대한 AWS 설명서와 달리 폴더 경로에는 앞에 슬래시가 필요하다는 것을 알았습니다. 즉, ( 단지 아님 ) 또는 (단지 아님 ) /public에 매핑합니다./publicpublic/static/staticstatic

/var/app/currentstatic내 EB 인스턴스에서 nginx 오류 로그와 conf 파일을 검사하여 이 사실 을 알아냈는데, 둘 다 /var/app/current/static.

관련 정보