无法获取本地文件test.txt://本地主机:8080/test.txt的

问题描述:

我已经有了localhost:8080运行的服务器,我的文件都按这样的:无法获取本地文件test.txt://本地主机:8080/test.txt的

/test 
    server.js 
    chatroom.html 
    test.txt 

服务器.js文件:

var express = require("express"); 
var app = express(); 
app.get("/", function(request, response) { 
    response.sendFile(__dirname + "/chatroom.html"); 
}); 
app.listen(8080); 

所以在我的浏览器的时候,我去http://localhost:8080我得到服务chatroom.html就好了。

我遇到的问题:

但是,当我去http://localhost:8080/chatroom.html它为我“不能得到/chatroom.html”

,同样,如果我去http://localhost:8080/test.txt它为我“不能GET /chatroom.html”

我不明白这里发生了什么问题,任何帮助将不胜感激!

您只为Express定义了一个路径,即根路径“/”。如果你想要其他文件可用,你也需要为它们调用app.get()。

或者,您可以将这些静态资产放在一个目录中,然后use express.static为它们提供服务。

+0

好的,你能告诉我,我是否理解这一点?我一直在想,显然不正确的是,在浏览器中输入'http:// localhost:8080/test.txt'与输入'file:///类似。 。 。/test/test.txt',除了它只是一个相对于'localhost:8080'的路径。你是说实际上,输入'http:// localhost:8080/test.txt'向服务器发送一个GET请求,它不知道如何处理? – digglemister

+1

没错。当您使用像Apache或Nginx这样的Web服务器时,通常会将它们配置为在静态文件存在的情况下提供服务,并且只有在请求的路径与文件不匹配时才会与PHP或node.js等后端连接。但通过连接到端口8080,您直接访问node&Express,而Express只知道您告诉它的路径以及您注册的任何中间件。 –