【问题标题】:Node-static example节点静态示例
【发布时间】:2013-03-14 20:49:44
【问题描述】:

我一直在拼命想弄清楚这段代码有什么问题。我直接从 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 语句,它进入了服务器处理程序,但没有进入侦听器处理程序。这可能与“结束”事件有关吗?

【问题讨论】:

  • 嗯,虽然已经解决了……但是可能不建议删除 addListener。这段代码应该在 node v0.8 或更早版本中运行良好。但是节点 v0.10 中不会触发“结束”事件。将.resume() 添加到处理程序绑定的末尾,如request.addListener(...).resume()。它将强制节点触发结束事件。

标签: node.js node-static


【解决方案1】:

我删除了request.addListener('end', ...) 函数:

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

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

}).listen(8080);

现在可以正常使用了。

【讨论】:

  • 其他使用快递的解决方案:app.use(express.static('../client'));
  • 您能解释一下为什么这样可以解决问题吗?那条线应该做什么?
【解决方案2】:

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

1) 转义你的反斜杠:

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

2) 使用path.join

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

__dirname是当前文件的路径。

【讨论】:

  • 我试过了,但无济于事。我还编辑了原始问题以包含更多详细信息。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多