无法使用 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')));
我阅读了很多关于 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')));