节点JS基础路由器被覆盖

我的server.js文件如下所示:

 var fs = require('fs'); var express = require('express'); var app = express(); // event listener var events = require('events'); var eventEmitter = new events.EventEmitter(); var port = process.env.PORT || 3000; // set the view engine to ejs app.set('view engine', 'ejs'); // make express look in the public directory for assets (css/js/img) app.use(express.static(__dirname + '/public')); // set the home page route app.get('/', function (req, res) { console.log('home page loaded'); }); app.listen(port, function () { console.log('Server listening on port ' + port); }); 

我是新来的节点/expression,但希望澄清。 我认为app.get('/', ...会处理默认的function,但是不是将消息logging到控制台,而是在运行node server.js时从/public加载index.html

这里覆盖路由function是什么? 如果有帮助,表示版本是4.11.1。

你有这个问题,因为serve-static模块,它是你正在使用的中间件: express.static()

从其文档注意到:

默认情况下,这个模块会发送“index.html”文件来响应目录上的请求。 要禁用此设置为false或提供一个新的索引按照首选顺序传递一个string或一个数组。

即replace: app.use(express.static(__dirname + '/public'));

与: app.use(express.static(__dirname + '/public',{'index':false}));