node.js - 发送 index.html 时从未触发主“/”路由控制器
问题描述
我试图了解我遇到的奇怪行为。我有一个node.js
已安装的简单服务器express
。服务器仅用于中继的目的,因为在前端它的react
应用程序,所以我不使用服务器来发送特定的文件或类似的东西。最重要的是,我将它连接到cloudflare
灵活模式以避免处理证书。服务器还安装socket.io
了实时数据流。
我遇到的问题是在访问/
主服务器路由时,永远不会触发该路由的快速控制器。因此,例如输入 url https://example.org
,您会期望/
控制器中的此路径 - 触发。出于某种原因,情况并非如此。
index.js
const path = require("path");
const express = require("express");
const app = express();
const http = require("http").Server(app);
const session = require("express-session");
const redis = require("redis");
let RedisStore = require("connect-redis")(session);
let redisClient = redis.createClient();
const io = require("socket.io")(http);
const bodyParser = require("body-parser");
const errorHandler = require("./lib/handlers/error");
const webRoute = require("./lib/routes/web");
const config = require("./config");
const socketService = require("./lib/services/socket");
let sessionMiddleware = session({
store: new RedisStore({ client: redisClient, ttl: config.ttl }),
secret: config.secret,
saveUninitialized: true,
resave: false,
proxy: true,
cookie: { secure: true },
});
app.set("trust proxy", 1);
io.use((socket, next) => {
sessionMiddleware(socket.request, socket.request.res || {}, next);
});
app.use(sessionMiddleware);
app.use(express.static(path.join(__dirname, config.public)));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use("/", webRoute);
app.use(errorHandler);
http.listen(config.port, function () {
console.log("Server listening on port " + config.port);
});
socketService(io);
web.js(网络路由)
const router = express.Router();
const config = require("../../config");
const web = (req, res, next) => {
console.log("main route triggered", Date.now());
res.sendFile(path.join(__dirname, config.index));
};
router.get("/*", web);
module.exports = router;
所以基本上无论输入什么样的路由/about
,/gallery
它都会发送index.html
文件,因为路由是由react
应用程序管理的。现在我不明白的是,何时/about
输入,console.log
被触发,但/
不是。即使我完全删除了控制器,输入域仍然有效并发送了 index.html 文件。
为什么会发生这种情况以及如何解决它,所以访问/
主路由总是触发控制器?
解决方案
推荐阅读
- c++ - 在此示例中如何避免代码重复?
- r - 在 R 上生成一些真正糟糕的图像
- python - 如何在 Python 中编写代码以避免动态内存分配,允许禁用 GC?
- mysql - 将变量与查询结果中的第 n 行进行比较时,MySQL IF 语句的正确语法是什么?
- python - 如何获取opencv中显示的图像坐标
- amazon-web-services - 如何将我的自定义 ADFS 属性映射到 AWS Cognito 用户池属性?
- botframework - 从 Simple Azure bot 调用 Graph API 的步骤
- python - 为什么这个幂函数在负指数情况下返回零?
- regex - 如何将一个字符串与另一个字符串进行比较,其中一个字符串之间有空格
- javascript - 使用 datazoom 进行缩放时出现 eCharts xAxis 错误