我绞尽脑汁想弄清楚这段代码到底出了什么问题。我直接从node-static github存储库示例中复制了它,但它似乎不起作用。我所做的唯一修改是对公共文件的路径(以前是'./public')。在我的公共文件夹中,我有一个index.html,但是当我点击http://localhost:8080/index.html
时,我什么也没有得到。
var static = require('node-static');
//
// Create a node-static server instance to serve the './public' folder
//
var file = new(static.Server)('C:Projectsnodepublic');
require('http').createServer(function (request, response) {
request.addListener('end', function () {
//
// Serve files!
//
file.serve(request, response);
});
}).listen(8080);
如果有关系,我在Windows 7 64位上运行Node.js。
编辑:我加入了一些console.log
语句,它使其进入服务器处理程序,但没有进入侦听器处理程序。这是否与"end"事件有关?
我删除了request.addListener('end', ...)
函数:
require('http').createServer(function (request, response) {
//
// Serve files!
//
file.serve(request, response);
}).listen(8080);
我想你有一个窗口路径问题。我无法在我这边验证,但我可以给你两个选项:
1)转义反斜杠:
'C:\Projects\node\public'
2)使用path.join
var path = require("path");
var file = new(static.Server)(path.join(__dirname, "public"));
__dirname
为当前文件的路径
此外,您还可以提供一个错误页面:
let static = require('node-static');
let fileServer = new static.Server('C:Projectsnodepublic');
require('http').createServer(function(request, response) {
fileServer.serve(request, response, function(exception) {
if (exception && (exception.status === 404)) {
fileServer.serveFile('/404.html', 404, {}, request, response);
}
});
}).listen(8080);
文件404.html
应该存在