4

我一直在用头撞墙,试图找出这段代码有什么问题。我直接从 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:\Projects\node\public');

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语句,它进入了服务器处理程序,但没有进入侦听器处理程序。这可能与“结束”事件有关吗?

4

3 回答 3

13

我删除了该request.addListener('end', ...)功能:

require('http').createServer(function (request, response) {

    //
    // Serve files!
    //
    file.serve(request, response);

}).listen(8080);

现在它工作正常。

于 2013-04-05T09:19:35.780 回答
1

我认为你有一个Windows路径问题。我无法验证它,但我可以给你 2 个选项:

1)逃避你的反斜杠:

'C:\\Projects\\node\\public'

2) 使用path.join

var path = require("path");
var file = new(static.Server)(path.join(__dirname, "public"));

__dirname是当前文件的路径。

于 2013-03-14T22:46:16.897 回答
0

此外,您还可以提供错误页面:

let static = require('node-static');

let fileServer = new static.Server('C:\Projects\node\public');

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应该存在

于 2019-08-31T20:15:19.173 回答