Github Bot部署Glitch遇Unexpected token ;错误及配置疑问
核心错误原因
你遇到的SyntaxError: Unexpected token ;是因为Glitch的Node.js 10.24.1不兼容你安装的lru-cache@9.1.2版本。lru-cache从v7开始就要求Node.js >=12,v9更是要求Node.js >=16,而Node 10完全不支持该版本包中的语法特性,才会触发这个报错。
你的疑问解答
1. 本地构建后为何仍受Node版本影响?
TypeScript编译只处理你自己写的TS代码,把它转成兼容目标环境的JS,但node_modules里的第三方依赖包是直接安装的原始代码,不会被你的项目编译流程处理。这些依赖包会根据自身版本要求使用对应Node版本的语法,当运行环境(Glitch的Node10)不满足依赖的最低版本要求时,就会出现语法错误。
2. 部署到Glitch后是否还需使用SMEE通道?
不需要。Glitch会给你的项目分配一个公网可访问的URL(比如https://your-project-name.glitch.me),直接把这个URL加上路径/api/github/webhook填到GitHub App的Webhook配置里即可,SMEE只用于本地开发时没有公网IP的场景。
修复步骤
降级lru-cache到兼容Node10的版本:
在项目根目录执行命令:npm install lru-cache@6.0.0或者修改package.json中的依赖版本,指定
"lru-cache": "^6.0.0"后重新安装依赖。确认Glitch环境变量配置:
- 删除
WEBHOOK_PROXY_URL,设置WEBHOOK_URL为你的Glitch项目URL +/api/github/webhook(比如https://your-project.glitch.me/api/github/webhook) - 保持
WEBHOOK_SECRET和你在GitHub App中配置的一致
- 删除
可选:尝试升级Glitch的Node版本:
在package.json中添加engines字段:"engines": { "node": ">=16" }然后重启Glitch项目,部分Glitch计划支持自动安装指定版本的Node.js,如果不支持则只能用降级依赖的方案。
内容的提问来源于stack exchange,提问作者Pieterjan

