Javascript 得到;无法获取/quot;之后添加中间件功能
我正在学习Node.js和Express。我有一个问题,当我将中间件功能添加到代码中时,如下所示:Javascript 得到;无法获取/quot;之后添加中间件功能,javascript,node.js,express,Javascript,Node.js,Express,我正在学习Node.js和Express。我有一个问题,当我将中间件功能添加到代码中时,如下所示: var express = require('express'); var http = require('http'); var app = express(); var httpServer = http.createServer(app); /* app.get('/', function(req, res) { console.log("Received GET req
var express = require('express');
var http = require('http');
var app = express();
var httpServer = http.createServer(app);
/*
app.get('/', function(req, res) {
console.log("Received GET request for resource /");
res.sendFile('index.html', { root: __dirname });
});
*/
//app.use(express.static('src'));
var myLogStatement = function(req, res, next) {
console.log("Received", req.method, "request for resource", req.path, "from", req.ip);
next(); // callback to the middleware function
}
app.use(myLogStatement);
httpServer.listen(3000, function(){
console.log("Listening on port 3000");
});
然后我无法正确加载我的HTML页面。我无法获取/在localhost:3000中
但是如果我使用
app.get('/', function(req, res) {
console.log("Received GET request for resource /");
res.sendFile('index.html', { root: __dirname });
});
或
然后我的HTML就可以正确加载了
有人能帮我弄清楚吗?谢谢 httpServer在vanilla node.js上使用,这意味着您可以在不包含express的情况下运行服务器。但由于您包括express,您现在必须使用
app
处理路线。这是nodejs的官方文档,如果您想使用httpServer,请尝试阅读此文档并实现它我想说的是,您的代码绝对正确,但不完整。出现错误:无法获取/
,因为您尚未实现它。默认情况下,Nodejs不知道使用哪个路由和哪个动词
但是,app.get('/')…
和app.get(express.static…
都有效,因为您提到的是路线(在您的情况下是'/'))和动词(在您的情况下是'get')
请使用下面的代码片段,它是有效的
注意:我已经删除了HTTP模块,因为它不是必需的
var express=require('express');
var-app=express();
var myLogStatement=函数(req、res、next){
控制台日志(“已接收”,请求方法,“资源请求”,请求路径,“来自”,请求ip);
next();//对中间件函数的回调
}
应用程序使用(myLogStatement);
//添加路线
app.get(“/”,(_,res)=>{
res.status(200)send('Got you!');
});
app.listen(3000,函数(){
console.log(“在端口3000上侦听”);
});
您是否尝试将中间件功能移到get
或use(express.static)
之上?同意@Ryan。ExpressJS是香草NodeJS HTTP的包装器。ExpressJS使所有后端NodeJS开发人员的生活变得轻松。
app.use(express.static('src'));