gpt4 book ai didi

javascript - Express JS 路由器有时返回 404,有时返回 200

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:36 25 4
gpt4 key购买 nike

我用angular 2,表达js。因此,对于所有不是 css、图像、js、视频的请求,我发送 index.html 文件。我的路由器代码:

router.get(/\/(?!((.*\.html$)|(.*\.css$)|(.*\.mp4)|(.*\.woff)|(.*\.js$)|(.*\.map$)|(.*\.jpg$)|(.*\.jpeg$)|(.*\.png$)|(.*\.gif$))).+$/gmi,
ensureConnect.ensureLoggedIn({ redirectTo: '/' }),
function(req, res) {
res
.set('Content-Type', 'text/html')
.sendFile(../dist/index.html);
});

对于根路由器 '/' 它工作完美,但如果我尝试打开另一个页面(例如 '/product/am-0596157134')它有时会打开页面,但有时返回 404 (Cannot GET/product/am-0596157134)

所以我尝试重新加载页面两次,第一次重新加载返回 404,第二次返回 200。这是日志:

::ffff:127.0.0.1 - - [10/Nov/2016:11:46:24 +0000] "GET /product/am-0596157134 HTTP/1.1" 404 34 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"

::ffff:127.0.0.1 - - [10/Nov/2016:11:46:25 +0000] "GET /product/am-0596157134 HTTP/1.1" 200 2299 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"

知道为什么会发生这种情况以及如何解决它吗?

最佳答案

TL;DR:从正则表达式中删除 g 标志。

当您使用 /g 时,正则表达式会保持内部状态(存储在 lastIndex 属性中)以便能够找到连续的匹配项。

在您的情况下,此状态在请求之间保持不变,因此对于第一个请求执行匹配,更新最后一个索引,当有新请求进入时,匹配从最后一个索引开始。当它不匹配时(很可能不会),它重置的状态和新的请求将再次匹配。

关于javascript - Express JS 路由器有时返回 404,有时返回 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40527827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com