使用默认路由的Express.js路由

我有以下Express.js代码:

router = express.Router() fs.readdirSync('./controllers').forEach(function (file) { if(file.substr(-3) == '.js') { route = require('./controllers/' + file); route.controller(router); } }); app.use('/', router); 

它运作良好。 我没有在我的控制器中为'/'path设置path,而我的Express.js服务器默认情况下从'public'文件夹呈现'index.html' – 这是我想要的。 现在我想添加'*'路由,所以Express.js从'public'文件夹返回'index.html' – 这是静态文件,不需要渲染,只是返回。 我该怎么做? 谢谢

如果您希望自己的服务从根path提供public/index.html ,则可以简单地使用express.static如下所示:

 app.use(express.static('public')); 

express.static会默认将index.html作为索引文件,您可以在第二个参数中configuration它:

 app.use(express.static('public', {index: 'myIndex.html'})) 

还要注意的是,你不需要指定root来app.use你的方式。 只需做到这一点:

 app.use(router); 

我甚至会build议你的route.controller()方法是没有必要的。 如果你的每个控制器都导出了他们自己的express.Router()你可以简单地在你的迭代器中执行app.use(myController)