2

テストのために、2秒ごとにファイルを作成したいのですが、最初のファイルを作成できましたが、2秒後に次のエラーが発生します。

Restify listening on port 8080 in %s mode
 create 2012_8_5_8_57.txt

timers.js:234
    callback.apply(timer, args);
         ^
TypeError: Cannot call method 'apply' of undefined
at Timer.exports.setInterval.timer.ontimeout (timers.js:234:14)

すべてがrestifyフレームワークを備えたノードサーバーで実行されています。誰かが知っているなら、エラーは助けてくれて大いに感謝されるでしょう!コードは次のとおりです。

var d = new Date();
var n = d.getDay();
var m = d.getMonth();
var y = d.getFullYear();
var min = d.getMinutes();
var sec = d.getSeconds();

//create file
function openUnlink(name) {
    console.log(name);
    fs.open(name, 'w', function (err) {
        console.log(' create ' + name);

    });

};

function createFile() {
    openUnlink(y+'_'+m+'_'+n+'_'+min+'_'+sec+'.txt');
};

//create file every 2 seconds
setInterval(createFile(), 2000);
4

1 に答える 1

4

で関数を呼び出す必要はありませんsetInterval。あなたはそれに参照を渡すだけです。また、関数内で日付を定義する必要がありcreateFileます。

var fs = require('fs');

//create file
function openUnlink(name) {
    console.log(name);
    fs.open(name, 'w', function (err) {
        console.log(' create ' + name);

    });

};

function createFile() {
    var d = new Date();
    var n = d.getDay();
    var m = d.getMonth();
    var y = d.getFullYear();
    var min = d.getMinutes();
    var sec = d.getSeconds();
    openUnlink(y+'_'+m+'_'+n+'_'+min+'_'+sec+'.txt');
};

//create file every 2 seconds
setInterval(createFile, 2000);
于 2012-09-07T08:45:42.577 に答える