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]

我错过了什么?我认为这不起作用是因为 grunt 任务,但我不知道如何解决它。将它包装在 try-catch 块中不会产生任何结果。

4

1 回答 1

3

您需要使您的projectJSON任务异步 - 在调用 exif 回调之前 Grunt 正在退出。

查看有关异步任务的 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 回答