Это не определено в родительском конструкторе - slack botkit
Я пытаюсь заставить botkit настроить веб-сервер и вызвать функции, которые определены в другом файле. Но когда я запускаю код, я получаю сообщение об ошибке "Невозможно прочитать свойство" клиент "неопределенного" в botController.js.
//index.js
const Botkit = require('botkit');
const Strings = require('./utils/strings');
const Console = console;
require('dotenv').config();
const EventsController = require('./controllers/events.controller');
const BotController = require('./controllers/bot.controller');
if (
!process.env.CLIENT_ID ||
!process.env.CLIENT_SECRET ||
!process.env.PORT ||
!process.env.VERIFICATION_TOKEN
) {
Console.log(
'Error: Specify CLIENT_ID, CLIENT_SECRET, VERIFICATION_TOKEN and PORT in environment'
);
process.exit(1);
}
const botController = new BotController;
slackline.setupWebserver(process.env.PORT, botController.setupWebserver);
//bot.controller.js
const Botkit = require('botkit');
require('dotenv').config(); //not sure if need to be imported
let config = {
json_file_store: '../db_slackbutton_slash_command/',
};
class BotController {
constructor () {
this.client = Botkit.slackbot(config).configureSlackApp({
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
scopes: ['commands', 'channels:read'],
redirectUri: 'https://cwbcn2.localtunnel.me/oauth',
});
}
setupWebserver (err, webserver) {
//error thrown here
this.client.createWebhookEndpoints(this.client.webserver);
this.client.createOauthEndpoints(this.client.webserver, function (
err,
req,
res
) {
if (err) {
res.status(500).send('ERROR: ' + err);
} else {
res.send('Success!');
}
});
}
}
module.exports = BotController;
Изначально весь мой код был в index.js, и он был настроен ботом просто отлично. Я хочу поместить обратные вызовы в отдельный файл контроллера, поэтому я создаю отдельный файл botController.js. Этот код изначально был в index.js.
const Botkit = require('botkit');
const Strings = require('./utils/strings');
const Console = console;
require('dotenv').config();
const EventsController = require('./controllers/events.controller');
if (
!process.env.CLIENT_ID ||
!process.env.CLIENT_SECRET ||
!process.env.PORT ||
!process.env.VERIFICATION_TOKEN
) {
Console.log(
'Error: Specify CLIENT_ID, CLIENT_SECRET, VERIFICATION_TOKEN and PORT in environment'
);
process.exit(1);
}
let config = {
json_file_store: './db_slackbutton_slash_command/',
};
const slackline = Botkit.slackbot(config).configureSlackApp({
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
scopes: ['commands', 'channels:read'],
redirectUri: 'https://cwbcn2.localtunnel.me/oauth',
});
slackline.setupWebserver(process.env.PORT, function (err, webserver) {
slackline.createWebhookEndpoints(slackline.webserver);
slackline.createOauthEndpoints(slackline.webserver, function (
err,
req,
res
) {
if (err) {
res.status(500).send('ERROR: ' + err);
} else {
res.send('Success!');
}
});
});