当我阅读" login.html"在app.js中有两个href链接(登录和注册),它应该重定向到提供的位置但是当我点击它们时它不会发生? 这里是代码
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('./login.html' , function(err, data){
if(err){
console.log(err);
}
console.log("sanjay");
res.end(data);
});
}).listen(3000);
console.log('Server running at http://<workspace-url>/');
&#34;的login.html&#34;
<html>
<head>
</head>
<body>
<ul>
<li><a href="index.html" >login</a></li>
<li><a href="index.html">signup</a></li>
</ul>
</body>
</html>
答案 0 :(得分:0)
nodejs服务器不会自动提供任何文件。您有代码来提供login.html,但您没有任何代码可以提供任何其他文件。因此,在编写服务器时,无论请求的是什么URL,所有请求都将提供login.html。
如果您想坚持使用普通的http服务器,那么您必须查看req
参数以查看所请求的路径,然后提供适当的文件。但是,像Express这样的简单框架使用一行代码提供大量的静态HTML文件变得更加简单。
请求对象为documented here,您可以查看req.url
是否要查看请求的网址,然后提供相应的文件。
我个人建议您使用Express framework,您可以使用express.static()
功能通过一行代码为静态HTML文件提供服务。
答案 1 :(得分:0)
您的app.js文件仅提供login.html
,但它没有处理index.html
的请求。
您可以像这样修改app.js:
http.createServer(function (req, res) {
if (req.url === '/index.html') {
fs.createReadStream(__dirname + '/index.html').pipe(res)
} else {
fs.createReadStream(__dirname + '/login.html').pipe(res)
}
}).listen(3000)