首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express JS路由器有时返回404,有时返回200

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

Stack Overflow用户
提问于 2016-11-10 12:37:13
回答 1查看 411关注 0票数 2

我用角度2表示js。所以对于所有的请求,不是css,图像,js,视频,我发送index.html文件。我的路由器代码:

代码语言:javascript
复制
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 0596157134‘),它有时会打开页面,但有时会返回404 (无法获得/product/am-0596157134)

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

*ffff:127.0.0.1-10/11/11/2016:11:46:24 +0000 "GET /product/am-0596157134 HTTP/1.1“404 - "Mozilla/5.0 (Macintosh;Intel 10_12_0) AppleWebKit/537.36 (KHTML,类似壁虎) Chrome/54.0.2840.71 Safari/537.36” *ffff:127.0.0.1-10/11/11/2016:11:46:25 +0000 "GET /product/0596157134 HTTP/1.1“2002299 "Mozilla/5.0 (Macintosh;Intel 10_12_0) AppleWebKit/537.36 (KHTML,类似壁虎) Chrome/54.0.2840.71 Safari/537.36”

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-10 13:08:43

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

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

在您的示例中,在请求之间保持此状态,因此对于第一个请求执行匹配,更新最后一个索引,当一个新请求出现时,匹配从最后一个索引开始。当它不匹配(而且可能不匹配)时,它重置的状态和一个新请求将再次匹配。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40527827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档