Search code examples
node.jsbotstypeerrorslackslack-api

TypeError: Slackbot is not a constructor


I need your help because it's the first time that I develop a Slack bot and I don't understand why this message appear:

const botSlack = new Slackbot ({
                 ^

TypeError: Slackbot is not a constructor

Here my code : slack.js

const {Slackbot} = require('@slack/bolt');

const botSlack = new Slackbot({
    token : process.env.SLACK_BOT_TOKEN,
    signingSecret: process.env.SLACK_SIGNING_SECRET,
});

(async () => {
    await botSlack.start(process.env.PORT || 3000);
})();

Part of my package.json:

  "scripts": {
    "dev": "nodemon slack.js",
},
  "dependencies": {
    "@slack/bolt": "^3.11.0",
},

In the bolt documentation (https://api.slack.com/tutorials/hello-world-bolt) and others, it's the same and it's run.

Please someone can explain to me why ?


Solution

  • The documentation has this code - App instead of Slackbot. You can rename the local variable if you want, but the import statement requires the exact name:

    const { App } = require('@slack/bolt');
    
    const botSlack = new App({
      token: process.env.SLACK_BOT_TOKEN,
      signingSecret: process.env.SLACK_SIGNING_SECRET
    });
    
    (async () => {
      await botSlack.start(process.env.PORT || 3000);
    })();
    

    if you do want to rename the value, you can use

    const { App: Slackbot } = require('@slack/bolt');
    

    It is more common to use import statements for this, you can still alias it using import { App as Stackbot} from '@slack/bolt', see MDN - import