#javascript #node.js #gruntjs
#javascript #node.js #gruntjs
Вопрос:
У меня есть следующая grunt задача:
module.exports = function(grunt) {
var info = 'Syncs, updates English translations and downloads Chinese translations.';
grunt.registerTask('translations', info, function() {
require('../../node/poeditor');
});
};
Я хочу, чтобы require выполнял код в этом модуле узла, его изложение выглядит следующим образом:
var querystring = require('querystring'),
fs = require('fs'),
https = require('https');
// Sync Terms
console.log('Syncing Terms...');
var requestConfig = {
options: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': 0
},
host: 'poeditor.com',
method: 'POST',
path: '/api/',
port: '443'
},
data: {
api_token: API_KEY,
action: 'sync_terms',
id: PROJECT_ID,
data: ''
}
};
fs.readFile('public/js/languages/en.json', 'utf8', function(error, data) { console.log(data);
});
Проблема в том, что никакие модули, упомянутые выше, вообще не выполняются, чего мне не хватает? Есть ли что-то особенное, что я должен сделать в Grunt или когда требуется модуль, для выполнения кода которого требуются другие модули?
Ответ №1:
Я понял это. Я выполнял асинхронные операции, поэтому вместо этого я назвал свою задачу следующим образом:
grunt.registerTask('translations', info, function() {
require('../../node/poeditor')(this);
});
Передайте эту область через модуль:
module.exports = function(grunt) {...
И затем назначенный выполняется следующим образом:
var done = grunt.async();
И при моем последнем асинхронном обратном вызове это вызывалось следующим образом:
done();
Итак, в основном я должен был следовать этому:
http://gruntjs.com/creating-tasks#why-doesn-t-my-asynchronous-task-complete