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

我的express.jsconfiguration如下所示:

//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"); }); 

我的处理程序从来没有被调用(应请求时没有path或只是'/'),浏览器只是得到一个303位置/ /,这里有什么错?

预先感谢您的帮助!

今天早上我有同样的问题,我想我会分享我的解决scheme。

express.static方法在所有的请求上运行,当它找不到匹配时,它可以运行next()函数并继续到你想要的处理程序,或者redirect到一个结尾的斜线来检查请求是否为一个目录。

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

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

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

尝试添加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你可以select一个不会与你的路由器相交的path。