fs.writeFile没有错误,但无法写入文件

时间:2014-03-27 22:29:04

标签: javascript node.js fs

我正在使用node.js,尝试保存文件,不会抛出任何错误,是的,图像不会保存。这就是我保存文件的方式:

var url = 'captures/' + getFileName() + '.png';

    fs.writeFile(url, base64, 'base64', function(err) {

        if(err) {
            console.log(err);
        } else {
            console.log("The file was saved!");
        }
    });

使用助手为我创建文件名:

function getFileName(){
    var d = new Date()
    return d.getMonth()+'-'+d.getDate()+'-'+d.getYear()+'-'+d.getHours()+'-'+d.getMinutes()+d.getSeconds();
}

任何人都有这个问题吗?

4 个答案:

答案 0 :(得分:10)

问题是因为这个调用是异步的,并且可能正在失去上下文,我能够通过使用同步执行它的fs.writeFileSync来修复它。希望这有帮助

答案 1 :(得分:1)

添加console.log('captures/' + getFileName())只是为了确保您的文件名正确无误。当我遇到这个问题时,我发现我的文件路径/名称有问题,而节点并没有给我一个错误来解释。

答案 2 :(得分:0)

对于打字稿版本, 只是在这里分享我的经验,在我的用例中有一个 JSON 文件,我用来存储一些临时数据读取它并进行一些更改并更新它并将更新的数据存储到相同的 JSON 文件将用于下一个周期。 (cmdA & cmdB & cmdC ; wait) ; cmdD 没有抛出任何错误,同时它没有更新我的 JSON 文件,因为 JS 版本运行良好,然后我意识到打字稿在我的根目录或 src 目录中进行了这些更改。在那里创建了另一个 JSON 文件。

答案 3 :(得分:-1)

对我来说,原来我希望我的文件输出到错误的目录中。

我的代码看起来像这样:

expandedPanelId = 'collapse_2'

程序已保存在'use strict'; const fs = require('fs'): fs.writeFile('target.txt', (err) => { if(err) { throw err; } console.log('File Saved!'); ); 下。我正在尝试执行以下命令:

$ cd /path/to/myfolder
$ node filesystem/write-simple.js

我看到成功的输出./myfolder/filesystem/write-simple.js-但是没有创建文件!没有抛出错误!

实际上是在File Saved!下创建了文件-因为那是我执行/path/to/myfolder的地方。我似乎以某种方式期望这是因为我的代码位于node目录中,因此文件将在该目录中创建,这在事后看来很愚蠢:-D