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

Telegraf开发Telegram Bot导入session中间件报错问题求助

问题根因

两个异常均由Telegraf版本与导入方式不匹配导致:

  • 从主包解构session后编辑器划掉bot.use(session()),是因为你安装的是Telegraf 4.12.0及以上的新版本,该版本起session中间件已从核心包剥离,主包不再导出session变量,解构得到的值实际为undefined,调用自然触发异常。
  • 子路径导入telegraf/session抛出ERR_PACKAGE_PATH_NOT_EXPORTED错误,是因为新版本package.json的exports规则中已移除该子路径声明,旧版导入逻辑不再被支持。
解决方案

根据你的项目需求二选一即可:

方案1:适配官方新版本(推荐)

新版本将session拆分为独立维护的包,按以下步骤调整:

  1. 安装独立session依赖:
npm install @telegraf/session
  1. 修改导入代码:
const { Telegraf, Scenes, Markup, Composer, Context } = require('telegraf');
const session = require('@telegraf/session');

// 后续逻辑无需改动
const bot = new Telegraf('你的Bot Token');
bot.use(session());

注意:如果搭配Scenes场景使用,session中间件必须在场景相关中间件之前注册,否则会话状态无法正常存储。

方案2:降级到兼容旧语法的版本

如果不想改动现有代码逻辑,直接将Telegraf固定到最后一个支持内置session的版本即可:

npm install telegraf@4.11.2

降级完成后,你原本写的两种导入方式都可以正常运行,不会再出现路径导出错误、编辑器标红划掉的问题。

避坑提示

Telegraf自4.12版本起做了核心精简,除session外,不少原内置的中间件(如stage、i18n等)都被拆分为@telegraf/*命名空间下的独立包,主包仅保留核心能力,网上发布时间较早的教程里的导入写法,在新版本里大概率无法直接运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:51:13