无法使用 express 解析 GET 请求

Can't parse GET request using express

我阅读了很多关于 node、express 和许多有用模块的内容。 我正在尝试解析 GET HTTP 请求,但我做错了。

也许可以使用 express.Router()views engine 解决此问题,但我想知道 为什么 此代码不起作用?

Server is up and running! Public files are very well served BUT I cannot parse GET request.

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

/*I would like to get req.session here*/
app.get('/', function (req, res, next) {
    console.log('I'm trying to log this string');
})

我还使用 morgan 记录所有 HTTP 请求,这是输出:

Listening at: http://localhost:8080
GET / 200 14.288 ms - 9139
GET /css/materialize.css 304 16.311 ms - -
GET /css/style.css 304 24.775 ms - -
GET /js/materialize.js 304 21.287 ms - -
GET /js/init.js 304 20.238 ms - -
GET /js/index.js 200 51.159 ms - 2719
GET /fonts/roboto/Roboto-Regular.woff2 304 2.419 ms - -
GET /fonts/roboto/Roboto-Medium.woff2 304 3.663 ms - -
GET /fonts/roboto/Roboto-Light.woff2 304 7.958 ms - -
GET /fonts/roboto/Roboto-Bold.woff2 304 9.010 ms - -

It works commenting :

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

但是,显然,没有提供任何文件。

谢谢!

PS:我从未见过解释上述情况的教程或代码片段。

我猜你在 public/ 目录中有一个名为 index.html 的文件,这是请求 / 时将得到的文件,因为那是 express.static() 默认执行。

您可以禁用该行为,因此请求将传递给您的 / 处理程序:

app.use(express.static(path.join(__dirname, 'public'), { index : false }));

这已记录在案 here

或者,您可以通过在静态中间件之前声明它来确保请求命中 / 处理程序:

app.get('/', function (req, res, next) {
  console.log('I'm trying to log this string');
  // make sure to end the response, to prevent hanging requests.
  res.end();
});

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

感谢 @robertklep,我解决了这个问题:

app.get('/', function (req, res, next) {
  console.log('I'm trying to log this string');
  // make sure to end the response, to prevent hanging requests.
  next();
});

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