为什么fs.write中出现“bad argument”错误

时间:2014-01-03 23:19:45

标签: javascript node.js

确定。 所以我试图从一个文件中读取一个数字,它代表一个计数器,做一些循环,每次写入第二个文件,然后在我想的时候停止,并将计数器的新值写入同一个第一个文件。

var textPath = "/kolodvori.txt";
var countPath = "/dijestao.txt";
var buffer = new Buffer(0);

fs.readFile(countPath, function (err,data){
    if (err) console.log(err);
    else {      
        console.log(data);
        i = data;

        var stream2 = fs.createWriteStream(textPath, {flags: 'a'});

        stream2.once('open', function (fd){ 
            fs.open(countPath,'w', function (fd2){
                getPageHtml(defHost, firstNewPath, i, function (html,count,callback){

                    if (count%10==0) console.log(count);

                    ++count;
                    i = new Buffer(count.toString());

                    //console.log('i:' + i);
                    fs.write(fd2, i, 0, i.length, null, function (err,len,buff){ console.log(err); });

                    var newPath = defPath.replace(/xxxKOLO1xxx/gi, count);

                    getPageHtml(defHost, newPath, count, callback);
                });
            });
        });
    }
});

在我辛勤工作之后,我获得了一个

奖励
fs.js:513
binding.write(fd, buffer, offset, length, position, wrapper);
        ^
TypeError: Bad argument
     at Object.fs.write (fs.js:513:11)

在这种情况下,“坏论据”甚至意味着什么? 是否与我有两种阅读方式,然后写入同一个文件?

2 个答案:

答案 0 :(得分:2)

使用path.join(__dirname, "./kolodvori.txt")和path.join(__dirname, "./dijestao.txt")代替。

使用/表示相对于root,并且您希望相对于脚本的目录。

请记住在顶部var path = require("path");

答案 1 :(得分:1)

我遇到了同样的错误,最后使用了writeFile。

https://nodejs.org/api/fs.html#fs_fs_writefile_filename_data_options_callback