我正在尝试从Grunt任务中读取的文件中提取元数据。
在此文件上执行: node 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时,我得到:[功能]
我错过了什么?我认为这不起作用是因为笨拙的任务,但我不知道如何解决它。将它包装在try-catch块中不会产生任何效果。
答案 0 :(得分:3)
您需要使projectJSON
任务异步 - 在调用exif回调之前Grunt正在退出。
查看Grunt documentation on asynchronous tasks.
这就是你可以使你的任务异步的方法:
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();
});
});
}