javascript - 当通配符匹配时, Node 快速 GET 路由会失败所有其他请求

标签 javascript regex node.js express

我有一个路由器设置来接受任何与其中的“API”一词不匹配的 GET 请求。这是针对我的单页应用程序的,因此我的 javascript 无法使用其路由的任何已添加书签的网址。

问题是每次我使用测试网址刷新页面时都会失败。

网址:http://localhost:3000/my-test-url

第一次点击网址时,我的索引页面会加载。

第二次刷新页面,出错。

无法获取/my-test-url

第三次刷新可以正常工作,第四次刷新失败,依此类推。

app.engine('html', cons.underscore);
app.set('view engine', 'html');
app.set('views', path.resolve(__dirname, '../client'));

// serve static content for the app from the "client" directory in the     application directory
//express.static(path.join(__dirname, '../client')))
app.get(/^(?!.*\bapi\b).*$/ig, function(req, res) {
    res.render('index');
});

app.listen(app.get('port'), function() {
    console.log('Server up: http://localhost:' + app.get('port'));
});

有什么东西可以让请求在第一次工作后保持打开状态吗?浏览器中的网络选项卡每次显示相同的 URL,但交替显示 404 错误。如有任何建议,我们将不胜感激。

更新,似乎确实存在问题,可能不是正则表达式的问题,而是路由器每次如何解释它的问题。当我设置这样的路线时:

app.get('*', function(req, res) {
    console.log(req.route);
    res.render('index');
});

正如我所期望的那样,它似乎每次都有效。

最佳答案

问题似乎出在 g 标志上。如果您只使用 /^(?!.*\bapi\b).*$/i 问题就应该消失。

但我实际上不知道这种行为是否是一个错误或为什么会发生。

关于javascript - 当通配符匹配时, Node 快速 GET 路由会失败所有其他请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787332/

相关文章:

javascript - 添加jquery验证

javascript - 检查数字是否以 00 结尾

javascript - 无法使我的示例函数异步

regex - 如何在 `/` 之后获取此字符串的一部分?

javascript - 正则表达式接受至少一个字母数字字符和一个特殊字符

node.js - POST 请求正文为 Null 或空

node.js - 在 Express 路径中获取文件类型

javascript - 为什么 JavaScript onClick 事件中图像显示不正确?

javascript - 无法将 $.get 返回的数据传递给 JavaScript 中的变量或数组

python - 如何在不同的分隔符上拆分字符串,但保留某些所述分隔符的输出? (标记字符串)