【问题标题】:Node.js - fs.stat throws ENOENT The operation completed successfullyNode.js - fs.stat 抛出 ENOENT 操作成功完成
【发布时间】:2011-10-08 02:33:02
【问题描述】:

我正在尝试关注 nodetuts.com 的第 3 集。此外,我正在使用最新(不稳定)版本的节点 - node.exe,版本 0.5.2。这是我的代码,我几乎整天都在用这个错误敲打我的头。它只是一个 Windows 的东西吗?

var http = require('http');
var fs = require('fs');

var file_path = __dirname + '\\me.jpg';
console.log('serving: '+file_path);
fs.stat(file_path, function(err, stat){

    if (err) throw err;

    http.createServer(function(request,response){

        response.writeHead(200, {
        'Content-Type':'image/jpeg'
        });

        fs.readFile(file_path, function(err, file_content){

            response.write(file_content);
            response.end();
        });

    }).listen(8000);
})

谢谢!

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    0.5.x 在 Windows 上存在缺陷。你可以这样做

    fs.readFile(__dirname + '/file.txt', callback);
    

    我相信 0.6 会解决这些问题。 :)

    【讨论】:

    • 我应该放置在回调函数中(而不是将其附加到 var)中,而不是“回调”,对吗?我想我做错了,结果还是一样……不过还是谢谢。
    • 问题不在于您的编码方式,也不是某些语法。问题在于“fs”,实际上甚至更深于网络代码。我们需要等待 0.6 版本,或者您可以使用上面显示的__dirname 使其工作。
    • 0.6 仍然有这个问题。我在使用 npm (Windows) 安装 expressjs 时遇到了这个问题。
    • 真的吗?我没有尝试过,但它仍然可以使用 __dirname 技巧(即,使路径相对,而不是绝对,它也必须以 dirname 开头)。
    【解决方案2】:

    您现在应该避免使用节点 v0.5.x,因为它被认为是不稳定的。使用 v0.4.x。如果你使用 git 来抓取节点,这样做:

    cd /path/to/your/local/node/git
    git checkout v0.4.12
    make && sudo make install
    

    【讨论】:

    • 出于某种原因 make just... 没有做任何事情。大约 3 个小时以来,它已经使用了我 50% 的 CPU。去搞清楚。 (这是我一直使用 .exe 的主要原因)
    • @dresende:他使用的是 Windows,而不是 *nix。
    • 是的.. 我注意到了。 Windows 仍然有问题,您可能应该使用 .exe 或在 cygwin(yak!)上编译和使用。或者等待即将发布的 0.6。
    猜你喜欢
    • 2011-01-22
    • 2022-11-16
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多