express.js:Route函数不叫express.js

时间:2014-08-03 15:05:15

标签: node.js express

我的express.js配置如下所示:

//app.js:
var routes = require('./routes/index');
app.use(express.static(path.join(__dirname, '../client/build'), {'index': false}));
app.use('/', routes);

//routes/index.js:
router.get('/', function(req, res) {
 console.log("im never called");
});

我的处理程序永远不会被调用(应该在没有路径或只是'/'的情况下进行调用时),浏览器只获得带位置的303 //这里有什么问题?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

尝试将module.exports = router;添加到routes/index.js

的末尾

<强> 编辑:

通常的做法是将所有静态文件放在一个目录中(可能已经完成)并且所有对静态文件的请求都以/public开头:

app.use('/public', express.static(path.join(__dirname, '../client/build'));

这样做

http://yoursite.com/public/some/file.js

将与

一起提供
../client/build/some/file.js

您可以选择不与路由器相交的路径,而不是/public

答案 1 :(得分:1)

今天早上我遇到了同样的问题,我想我会分享我的解决方案。

express.static方法正在对您的所有请求运行...当它找不到匹配项时,它可以运行next()函数并继续到您想要的处理程序或重定向到尾部斜杠来检查如果请求是针对目录的。

我通过添加'redirect:false'修复了它,如下所示:

app.use(express.static(
    path.join(__dirname, '../client/build'), 
    {index: false, redirect: false}));


参考:express.static(root, [options])