0

Grunt タスク内で読み取ったファイルからメタデータを抽出しようとしています。

実行:このファイルのノード test.js :

var exif = require('exif2');

exif('fixtures/forest.png', function (err, o) {
    console.log(arguments);
});

期待される出力を生成します

ただし、grunt プロセスの実行: grunt projectJSON

module.exports = function (grunt) {
    var exif = require('exif2');
    return grunt.registerMultiTask("projectJSON", "Creates project JSON file.", function () {
        exif('fixtures/forest.png', function (err, o) {
            console.log(arguments);
        });
    });

}

** Fixtures/forest.pngファイルでテストしているだけであることに注意してください

何も出力しません。コールバックは発生しません。

console.log exif を取得すると、次のようになります。 [Function]

私は何が欠けていますか?うまくいかないのは単調な作業が原因だと思いますが、修正方法がわかりません。それを try-catch ブロックでラップしても、何も生成されません。

4

1 に答える 1

3

タスクを非同期にする必要がありprojectJSONます。Grunt は、exif コールバックが呼び出される前に終了しています。

非同期タスクに関する Gruntのドキュメントをご覧ください。

これは、タスクを非同期にする方法です。

module.exports = function (grunt) {
    var exif = require('exif2');

    grunt.registerMultiTask("projectJSON", "Creates project JSON file.", function () {
        // Make task asynchronous.
        var done = this.async();

        exif('fixtures/forest.png', function (err, o) {
            console.log(arguments);

            // Invoke the task callback to continue with
            // other Grunt tasks.
            done();
        });
    });

}
于 2014-05-15T01:49:42.647 に答える