部署Viber机器人到Heroku时提示未检测到应用默认语言该如何解决?
Heroku部署Viber机器人报错
No default language could be detected for this app解决方案 报错原因
该报错在Heroku构建阶段触发,核心触发逻辑为:
- Heroku会自动扫描代码仓库根目录的特征配置文件识别项目开发语言,若缺失对应语言的标志性配置文件,就无法完成自动检测进而抛出该错误。不同语言对应需存在的特征文件如下:
- Node.js:
package.json - Python:
requirements.txt/Pipfile+Pipfile.lock - Java:
pom.xml - Go:
go.mod
- Node.js:
- 若你的Viber机器人项目存放在代码仓库的子文件夹内,Heroku默认扫描仓库根目录时也会找不到对应特征文件,触发报错。
报错截图:
解决办法
- 检查项目根目录是否存在对应语言的特征文件,缺失的话手动生成:
- Node.js项目:确保
package.json存放在根目录,若使用yarn作为包管理器还要同步上传yarn.lock - Python项目:在本地项目根目录执行
pip freeze > requirements.txt生成依赖声明文件后再上传
- Node.js项目:确保
- 若项目嵌套在仓库子目录,手动指定构建路径:
- 执行命令配置子目录buildpack:
heroku buildpacks:set https://github.com/timanovsky/subdir-heroku-buildpack.git - 配置项目路径:
heroku config:set PROJECT_PATH=替换为你的项目子目录路径 - 追加对应语言的官方buildpack,比如Python项目执行
heroku buildpacks:add heroku/python,Node.js项目执行heroku buildpacks:add heroku/nodejs
- 执行命令配置子目录buildpack:
- 自动检测失效时可手动指定buildpack:直接执行对应语言的buildpack绑定命令,比如Node.js执行
heroku buildpacks:set heroku/nodejs,之后重新推送代码部署即可。
内容的提问来源于stack exchange,提问作者Triton Line
相关产品推荐
相关产品推荐

