首页 > 解决方案 > 生产 React 应用程序因 429 错误而失败

问题描述

我已经建立了一个反应应用程序网页,我使用节点,表达和反应。我在带有 nginx 的 ec2 ubuntu 服务器中提供它,我还安装了 ssl 并配置了 DNS,但是当我加载页面时,第一次它没有问题,但是当重新加载时,我得到这个服务器响应 429 状态代码

该页面本身非常简单,但仍然失败并且我无法解决问题,我已经阅读了很多帖子和博客来修复它,但没有一个有效(这只发生在生产中,在开发环境中我没有得到任何错误运行我的节点应用程序)。

其中一些人说你必须延迟加载图像,我做到了,我也尝试在超时时加载组件,所以每 1.5 秒发出一次请求......

给我带来问题的主要文件是manifest.jsonfavicon.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.icoand 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"
}

这就是全部,如果您需要我提供一些其他文件,那将是一种乐趣。谢谢!

标签: node.jsreactjsnginxamazon-ec2http-status-code-429

解决方案


推荐阅读