【发布时间】:2020-12-28 10:06:43
【问题描述】:
我正在尝试在 Elastic Beanstalk 上部署我的 MERN 应用程序,但我似乎遇到了一个我无法解决的最后一个问题。
在本地运行我的服务器(运行节点服务器)时,我的应用运行良好,但在弹性 beanstalk 上运行时,页面永远不会加载。
经检查,未加载静态元素,如开发工具中所示:
Image showing ERR_CONNECTION_TIMED_OUT in dev tools
我检查了所有 EB 日志,没有发现任何错误或有用的消息。 我认为问题在于 EB 无法以某种方式找到我的静态文件。但是,我的构建文件应该不会被 git 忽略并部署到 EB。
以下是关于我的项目的一些背景信息: 我的后端和客户端代码在一个项目中,结构如下:
- 项目
- server.js
- 前端
- 构建
- 静态
- index.html
- 构建
我通过构建反应站点来运行我的应用程序,然后运行运行良好的“节点服务器”
这是我 server.js 中的相关代码:
const port = process.env.PORT || 8081;
app.use(express.static(path.join(__dirname, 'frontend/build')));
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'frontend/build/index.html'));
});
app.listen(port, () => {
console.log(`Server is running on port: ${port}`);
});
服务器正在成功发送服务器正在运行且数据库已建立连接的日志。所以看起来服务器没问题,只是前端有问题。
eb 配置文件:
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"
aws:elasticbeanstalk:application:environment:
PORT: 8081
NODE_ENV: production
aws:elasticbeanstalk:container:nodejs:staticfiles:
/static: /frontend/build/static
我不知道如何解决这个问题。 EB 是通过 CLI 部署的,我没有弄乱任何设置。我让 EB 知道我的静态文件在哪里,我相信它会说未找到,而不是超时。
任何帮助将不胜感激
【问题讨论】:
标签: node.js reactjs amazon-web-services express amazon-elastic-beanstalk