Привет, я пытаюсь написать сценарий аддонов для hubot. Кажется, у меня проблемы с просмотром. Ссылка «msg» внутри обратного вызова fork не определена, я не вижу никаких переменных в обратном вызове.Проблема обзора обратного вызова Coffeescript
У меня также была эта проблема со встроенным jira-issues.coffee! Вчера в этом скрипте jiraUrl не был определен в обратном вызове. Сегодня утром он снова работал, и теперь он снова перестает работать (после того, как я перезапустил hubot). Я даже не модифицировал его.
Кто-нибудь испытал что-нибудь подобное?
githubApi = require("node-github")
module.exports = (robot) ->
github = new githubApi { "version": "3.0.0" }
github.authenticate { "type":"basic", "username":process.env.HUBOT_GITHUB_USER, "password":process.env.HUBOT_GITHUB_P
ASSWORD }
robot.respond /kickstart\s(\S+)/i, (msg) ->
name = msg.match[1]
msg.send name
base_url = process.env.HUBOT_GITHUB_API || 'https://api.github.com'
github.repos.fork {"user":"Raven", "repo":"Raven","org":"codedemos"}, (err,data) ->
if err
msg.send "error :("
else
msg.send "Fork Complete..."
он компилирует
// Generated by CoffeeScript 1.6.3
(function() {
var githubApi;
githubApi = require("node-github");
module.exports = function(robot) {
var github;
github = new githubApi({
"version": "3.0.0"
});
github.authenticate({
"type": "basic",
"username": process.env.HUBOT_GITHUB_USER,
"password": process.env.HUBOT_GITHUB_PASSWORD
});
return robot.respond(/kickstart\s(\S+)/i, function(msg) {
var base_url, name;
name = msg.match[1];
msg.send(name);
base_url = process.env.HUBOT_GITHUB_API || 'https://api.github.com';
return github.repos.fork({
"user": "Raven",
"repo": "Raven",
"org": "codedemos"
}, function(err, data) {
var id;
if (err) {
return msg.send("error :(");
} else {
return id = data.id;
}
});
});
};
msg.send("Fork Complete...");
}).call(this);
который выглядит нормально пока работает она дает:
ReferenceError: msg is not defined
at Object.<anonymous> (/opt/kbot/scripts/kickstart.coffee:48:2, <js>:36:3)
at Object.<anonymous> (/opt/kbot/scripts/kickstart.coffee:33:1, <js>:38:4)
at Module._compile (module.js:456:26)
Ах да, я этого не заметил! Это требование coffeescript, чтобы иметь пустую строку в eof? Вероятно, я должен использовать редактор, который может отображать пробелы в будущем! Благодарю. – Sam
В основном coffeescript должен понимать, когда изменяется уровень отступа, и в этом случае вы не можете закончить файл с отступом и без новой строки. Если ваша последняя строка файла была красной слева, вы бы не ударили по этому краю. В любом случае, всегда была лучшей практикой unix, чтобы закончить все текстовые файлы с помощью новой строки, поэтому установите для своего редактора просто автоматическое выполнение. И да, если вы собираетесь кодировать в незашифрованных языках, лучше всего использовать редактор с хорошей способностью отображать и манипулировать пробелами. –