无法在Nodejs中使用Express显示index.html

时间:2013-10-27 16:12:42

标签: node.js express

我试图运行我的第一个快递应用程序,但似乎无法显示我的网页。我有以下代码:

var fs = require("fs");
var config = JSON.parse(fs.readFileSync("files/config.json"));  
var host = config.host;
var port = config.port;
var express = require("express");

var app = express();

app.use(app.router);
app.use(express.static(__dirname + "/public"));

app.get("/", function(request, response){
    response.send("hello!");
});

app.listen(port, host);
console.log("Listening on port" + port);

这是我的目录树

nodejs/
    js/
        javascript.js
    public/
        index.html

我知道服务器正在运行,因为当我运行"Hello!"

时,我在浏览器中收到127.0.0.01:1337响应

但是当我尝试输入网页1227.0.0.1:1337/index.html时,我会在浏览器中显示Cannot GET /index.html

所以我猜测我的name方法中的get值有问题,但无法弄清楚它是什么以及如何解决它

2 个答案:

答案 0 :(得分:12)

您的应用只会路由app.use(app.router)来电时设置的网页请求。因此,请将您的app.use电话重新排序为以下之一:

Express 3

app.use(express.static(__dirname + "/public"));
app.use(app.router);

__dirname是执行脚本所在的目录,因此它位于js目录中,而该目录是public您的代码所需的目标:

app.use(express.static(__dirname + "/../public"));
app.use(app.router);

Express 4

快递4 removes the need to manually do app.use(app.router)。使用Express 4,您只需要:

app.use(express.static(__dirname + "/../public"));

答案 1 :(得分:-1)

我有这个问题....经过很多麻烦我发现如果你在t时间运行两个工作区或项目,那么它将创建这个场景。因此,您可以一次只打开一个工作区,而不仅仅是文件...打开孔文件夹然后运行特定文件。在VS代码设置中进行以下更改。

  

设置设置

对于64位系统。

{
    "liveServer.settings.AdvanceCustomBrowserCmdLine: ": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
    "liveServer.settings.NoBrowser": false
}

对于32位系统。

{
    "liveServer.settings.AdvanceCustomBrowserCmdLine: ": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
    "liveServer.settings.NoBrowser": false
}