You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Slack Node.js应用时遭遇signingSecret初始化必填错误

运行Slack Node.js应用时遭遇signingSecret初始化必填错误

看起来你被Bolt应用的初始化错误卡住了,别着急,我帮你揪出问题所在——其实就是一个小小的参数名写错了!

核心问题:配置参数名错误

你在初始化Bolt App的时候,用了secret: SIGNING_SECRET这个配置,但Bolt v3.x版本要求的参数名是signingSecret,不是secret。框架识别不到你提供的签名秘钥,所以才会抛出那个“signingSecret is required”的错误。

解决办法:修正参数名

把Bolt实例的初始化代码里的secret改成signingSecret就行,修改后的代码如下:

const bolt = new App({
  token: SLACK_BOT_TOKEN,
  appToken: SLACK_APP_TOKEN,
  signingSecret: SIGNING_SECRET // 这里是关键修正!
});

额外优化建议(可选)

你现在自己用Express写了/x的POST路由来处理Slack命令,其实Bolt框架已经内置了命令监听的功能,用它来处理会更符合最佳实践,还能省去手动处理body parser和请求验证的麻烦。比如可以把你的自定义路由替换成Bolt的command监听器:

// 替换原来的app.post('/x', ...)
bolt.command('/x', async ({ command, ack, client }) => {
  // 先确认收到Slack的命令请求
  await ack();
  
  try {
    await client.views.open({
      trigger_id: command.trigger_id,
      view: {
        type: 'modal',
        title: {
          type: 'plain_text',
          text: 'Chat'
        },
        blocks: [
          {
            type: 'section',
            text: {
              type: 'plain_text',
              text: 'This is a chat modal'
            }
          },
          {
            type: 'divider'
          }
          // 在这里添加你的聊天元素
        ],
        close: {
          type: 'plain_text',
          text: 'Close'
        },
        callback_id: 'chat_modal'
      }
    });
  } catch (error) {
    console.error(error);
  }
});

这样修改后,你甚至可以去掉自己手动配置的body parser和Express路由,让Bolt帮你处理所有Slack的请求交互。

最后再确认两点

  1. 确保你的SIGNING_SECRET确实是从Slack应用设置页面(Basic Information -> App Credentials)复制的完整值,没有多余的空格或拼写错误
  2. 如果你的应用没有使用Socket Mode,其实appToken可能不是必须的,可以根据你的实际需求决定是否保留

备注:内容来源于stack exchange,提问作者hyperr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:08:02