我有一个路由器设置来接受任何与单词" API"不匹配的GET请求。在里面。这适用于我的单页应用,因此任何带有书签的网址我的javascript都无法使用其路由。
问题是我每隔一次用一个测试网址刷新页面就失败了。
网址:http://localhost:3000/my-test-url
首次点击网址时,我的索引页面会加载。
第二次刷新页面时出错。
无法GET / 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');
});
正如我所料,它似乎每次都有效。
答案 0 :(得分:3)
问题似乎是g
标志。如果您只是使用/^(?!.*\bapi\b).*$/i
,问题应该消失。
但我实际上不知道这种行为是否是一个错误或为什么会发生。