Node.js nodejs/expressjs重定向不起作用

Node.js nodejs/expressjs重定向不起作用,node.js,redirect,express,Node.js,Redirect,Express,我尝试在expressjs中提供带有重定向功能的网页。但它不知何故无法工作。我一定是对这里的某些事情不太了解 index.html: <html> <body> <div id="clicked"> not clicked </div> </body> </html> 两个文件位于同一目录中。我可以在浏览器控制台上看到日志“到达日志”,但我遇到了404错误:“cannotget/index.html”。 但是,

我尝试在expressjs中提供带有重定向功能的网页。但它不知何故无法工作。我一定是对这里的某些事情不太了解

index.html:

<html>

<body>
    <div id="clicked"> not clicked </div>
</body>

</html>
两个文件位于同一目录中。我可以在浏览器控制台上看到日志“到达日志”,但我遇到了404错误:“cannotget/index.html”。
但是,如果我重定向到外部网页,它可以工作。如果我将“res.redirect”(“index.html”);”更改为“res.redirect(“”;”),它可以很好地工作。

node.js默认情况下不提供任何文件。因此,硬盘上的文件并不重要。如果没有途径提供这些文件,Express将永远不会发送它们

因此,如果要重定向到
/index.html
,则需要一个路由来满足该请求。正如您的服务器现在一样,该请求将生成404(未找到路由/文件)

也许您想要做的是只呈现'index.html',而不重定向。这可能适用于你现有的一条路线

var express = require("express");
var app     = express();

app.get('/', function(req, res) {
    console.log("reached root!");
    res.sendFile("index.html");
});
app.listen(9876);
这些示例假定index.html文件位于应用程序目录中。如果它位于其他位置,则需要适当调整
sendFile()
的路径


对于静态文件,还可以使用
express.static()
自动为整个文件目录提供服务。有关详细信息,请参阅。

我不确定,但我认为您可能希望使用res.sendFile,而不是重定向到其他url。有关详细信息,请查看api:

我一点也听不懂你说的话。你想用一个例子来详细说明吗?谢谢。@derek-以后,请解释你不明白的地方。默认情况下,node.js不提供任何文件,因此没有支持路由的任何内容都无法工作。我不知道还能说什么。我添加了代码示例。我缺少的关键点是,如果要重定向到某个页面,则必须路由该页面。您需要告诉express您从何处为静态文件提供服务:
var express = require("express");
var app     = express();

app.get('/', function(req, res) {
    console.log("reached root!");
    res.redirect("/index.html");
});
app.get('/index.html', function(req, res) {
    console.log("reached root!");
    res.sendFile("index.html");
});
app.listen(9876);
var express = require("express");
var app     = express();

app.get('/', function(req, res) {
    console.log("reached root!");
    res.sendFile("index.html");
});
app.listen(9876);