我试图运行我的第一个快递应用程序,但似乎无法显示我的网页。我有以下代码:
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
值有问题,但无法弄清楚它是什么以及如何解决它
答案 0 :(得分:12)
您的应用只会路由app.use(app.router)
来电时设置的网页请求。因此,请将您的app.use
电话重新排序为以下之一:
app.use(express.static(__dirname + "/public"));
app.use(app.router);
__dirname
是执行脚本所在的目录,因此它位于js
目录中,而该目录是public
您的代码所需的目标:
app.use(express.static(__dirname + "/../public"));
app.use(app.router);
快递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
}