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

Flask对接Slack代码报错及Mac M1下ngrok命令疑问求助

问题解决方案

一、Flask对接Slack代码的错误修复

你遇到的500错误,本质是GET请求访问时,request.data为空,执行json.loads(request.data)会抛出JSON解析异常。把路由改成支持GET后,直接访问或测试GET请求时就会触发这个错误,而Slack的Challenge验证本身是POST请求。

修改方案:区分请求方法,只在POST请求时处理Slack事件,GET请求返回简单提示;同时改用request.get_json()替代json.loads(request.data),它会自动适配请求的Content-Type,且非JSON请求时返回None,避免解析报错。

修改后的代码:

import json
from flask import Flask, request, make_response
 
app = Flask(__name__)
 
@app.route('/', methods=['GET', 'POST'])
def hello_there():
    # GET请求返回服务器运行提示
    if request.method == 'GET':
        return make_response("Flask server is running", 200)
    
    # POST请求处理Slack事件
    slack_event = request.get_json()
    if slack_event and "challenge" in slack_event:
        return make_response(slack_event["challenge"], 200, {"content_type": "application/json"})
    
    return make_response("There are no slack request events", 404, {"X-Slack-No-Retry": 1})
 
 
if __name__ == '__main__':
    app.run(debug=True, port=5002)

二、MacBook M1终端需输入./ngrok的原因

这是因为你下载的ngrok二进制文件未添加到系统环境变量PATH中:

  • 直接输入ngrok时,系统会在PATH指定的目录(比如/usr/local/bin、/usr/bin)查找可执行文件,找不到就会报错。
  • 输入./ngrok是明确告诉系统:在当前工作目录下执行名为ngrok的可执行文件。

如果想直接用ngrok命令,只需把ngrok文件移动到PATH包含的目录里,比如执行以下命令:

sudo mv ./ngrok /usr/local/bin/

之后终端就可以直接输入ngrok执行了。

内容的提问来源于stack exchange,提问作者SejunBak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:27:33