node.js - 生产 React 应用程序因 429 错误而失败
问题描述
我已经建立了一个反应应用程序网页,我使用节点,表达和反应。我在带有 nginx 的 ec2 ubuntu 服务器中提供它,我还安装了 ssl 并配置了 DNS,但是当我加载页面时,第一次它没有问题,但是当重新加载时,我得到这个服务器响应 429 状态代码
该页面本身非常简单,但仍然失败并且我无法解决问题,我已经阅读了很多帖子和博客来修复它,但没有一个有效(这只发生在生产中,在开发环境中我没有得到任何错误运行我的节点应用程序)。
其中一些人说你必须延迟加载图像,我做到了,我也尝试在超时时加载组件,所以每 1.5 秒发出一次请求......
给我带来问题的主要文件是manifest.json和favicon.ico,它们可以通过 url 访问,所以我不明白为什么(另一个 429 示例)。
节点服务器.js
Routes 什么都没有,只有控制台日志
require('dotenv').config();
const express = require("express");
const app = express();
const path = require("path");
const cors = require("cors");
const allowedOrigins = [`http://localhost:${process.env.PORT}`];
var corsOptions = {
origin: function (origin, callback) {
if (allowedOrigins.indexOf(origin) !== -1 || !origin) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
};
app.use(cors(corsOptions));
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
app.use(express.static(path.join(__dirname, "/public")));
app.use("/", require("./routes/routes"));
app.get("*", (_, res) => res.redirect("/"))
app.listen(process.env.PORT, function () {
console.log(`Listening on port ${process.env.PORT}`);
});
应用目录结构
这是我的文件夹结构,public 文件夹是 react 脚本npm run build
返回的构建。
React 应用目录结构
在这里你可以看到结构,运行时得到的并没有什么特别之处npx create-react-app
。如您所见,有一个favicon.ico
and manifest.json
。
清单.json
{
"short_name": "Proximedica Bajío",
"name": "Proximedica Bajío - Oxígeno Medicinal",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}
这就是全部,如果您需要我提供一些其他文件,那将是一种乐趣。谢谢!
解决方案
推荐阅读
- garbage-collection - 为什么 finalize() 只在新对象创建后才执行,而不是在 gc() 被调用后执行?
- android - 从 Playground Online 生成 apk 文件
- python - Django - 使用外键进行序列化程序验证
- pandas - python pandas数据框索引
- python - 形状代表和交叉的部门
- lagom - 服务间通信 - 将服务 B 注入到 serviceAImpl 编译失败(没有消息代理尝试远程调用)
- react-native - 通过反应导航传递多个道具
- java - 多个对象映射器解析器
- puppeteer - 我必须使用 node 来运行 puppeteer 包吗?
- python - 如何从删除的表中取回列(系列)?