hubot-slack выдает ошибку при запуске
Я пытаюсь добавить новую интеграцию Hubot в наши каналы Slack. Я настраиваю это на компьютере с Windows и внедряю на сервере Heroku. Я следовал инструкциям по установке, приведенным здесь: https://github.com/slackhq/hubot-slack
Я могу создать и запустить новый экземпляр hubot на своем локальном компьютере (вызывая "bin/hubot" в приглашении Powershell), но когда я устанавливаю пакет hubot-slack и добавляю "hubot-slack" в файл external-scripts, я получаю ошибка. Если я удаляю значение из файла external-scripts, все в порядке.
PS C:\hubot> bin/hubot
jarvis> [Tue Dec 22 2015 15:18:24 GMT-0800 (Pacific Standard Time)] ERROR Error loading scripts from npm package - TypeError: require(...) is not a function
at Robot.loadExternalScripts (C:\hubot\node_modules\hubot\src\robot.coffee:399:11)
at C:\hubot\node_modules\hubot\bin\hubot:128:26
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
Если я добавлю флаг адаптера для Slack, я получу другую ошибку. Я попытался установить HUBOT_SLACK_TOKEN в качестве переменной системной среды.
PS C:\hubot> bin/hubot -a slack
[Tue Dec 22 2015 15:21:54 GMT-0800 (Pacific Standard Time)] ERROR No services token provided to Hubot
Каждый пример, который я могу найти, включает HUBOT_SLACK_TOKEN в вызов hubot, но это не работает для меня (я должен что-то упустить).
PS C:\hubot> HUBOT_SLACK_TOKEN=xoxb-22211110000-123456781234ZZZZYYYYXXXX ./bin/hubot --adapter slack
HUBOT_SLACK_TOKEN=xoxb-17240119159-dBeAEc2X8M2O9vJBYzWj5KFW : The term
'HUBOT_SLACK_TOKEN=xoxb-17240119159-dBeAEc2X8M2O9vJBYzWj5KFW' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is
correct and try again.
At line:1 char:1
+ HUBOT_SLACK_TOKEN=xoxb-22211110000-123456781234ZZZZYYYYXXXX ./bin/hubot --adapte ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HUBOT_SLACK_TOK...234ZZZZYYYYXXXX:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Чтобы исключить что-то локально, я развернул приложение в Heroku, но получил другую ошибку.
2015-12-22T22:28:49.426496+00:00 heroku[web.1]: State changed from crashed to starting
2015-12-22T22:14:54.739959+00:00 heroku[web.1]: State changed from starting to up
2015-12-22T22:14:55.133113+00:00 app[web.1]: [Tue Dec 22 2015 22:14:55 GMT+0000 (UTC)] ERROR Error loading scripts from npm package - TypeError: object is not a function
2015-12-22T22:14:55.133117+00:00 app[web.1]: at Robot.loadExternalScripts (/app/node_modules/hubot/src/robot.coffee:399:11, <js>:269:39)
2015-12-22T22:14:55.133119+00:00 app[web.1]: at fs.js:272:14
2015-12-22T22:14:55.133121+00:00 app[web.1]: at Object.oncomplete (fs.js:108:15)
2015-12-22T22:14:56.115333+00:00 heroku[web.1]: State changed from up to crashed
package.json:
{
"name": "jarvis",
"version": "0.0.0",
"private": true,
"author": "Me <email@domain.com>",
"description": "A friendly robot",
"dependencies": {
"hubot": "^2.17.0",
"hubot-diagnostics": "0.0.1",
"hubot-google-images": "^0.2.6",
"hubot-google-translate": "^0.2.0",
"hubot-help": "^0.1.2",
"hubot-heroku-keepalive": "^1.0.1",
"hubot-maps": "0.0.2",
"hubot-pugme": "^0.1.0",
"hubot-redis-brain": "0.0.3",
"hubot-rules": "^0.1.1",
"hubot-scripts": "^2.16.2",
"hubot-shipit": "^0.2.0",
"requirejs": "^2.1.22",
"hubot-slack": "^3.4.2"
},
"engines": {
"node": "0.10.x"
}
}
внешний scripts.json
[
"hubot-diagnostics",
"hubot-help",
"hubot-heroku-keepalive",
"hubot-google-images",
"hubot-google-translate",
"hubot-pugme",
"hubot-maps",
"hubot-redis-brain",
"hubot-rules",
"hubot-shipit",
"requirejs",
"hubot-slack"
]
2 ответа
В Windows кажется, что механизм немного отличается от того, что он обрабатывает в Linux. Ошибка "HUBOT_SLACK_TOKEN не распознана" возникает потому, что она считывает значение "HUBOT_SLACK_TOKEN" из переменных среды в окнах.
Создайте переменную окружения 'HUBOT_SLACK_TOKEN' вручную и установите значение, оно будет работать.
Вы можете проверить это в исходном коде в репозитории github: slack.coffee.
options =
token: process.env.HUBOT_SLACK_TOKEN
autoReconnect: !exitProcessOnDisconnect
autoMark: true
exitOnDisconnect: exitProcessOnDisconnect
proxyUrl: process.env.https_proxy
Что меня интригует, так это конкретная строка:
Error loading scripts from npm package - TypeError: require(...) is not a function
Вы также добавили другие скрипты из репо?
Также может быть что-то не так с узлом /npm/coffee installation/version на вашей машине с Windows. Убедитесь, что они установлены и в совместимой версии. В другой ветке возникла проблема с несовместимыми версиями. Расскажите нам о версиях, которые вы используете, и попробуйте понизить версию узла до 0.12.x.
То, как вы используете токен, хорошо.