如何在Heroku上为Sencha ExtJS npm项目配置JRE以完成构建
在Heroku上为Sencha ExtJS应用配置JRE环境
问题描述
尝试在Heroku上编译基于npm的Sencha ExtJS应用时,构建失败,核心错误提示为在Linux系统中下载并运行Sencha Cmd需要JRE,完整错误日志如下:
-----> 在Heroku-22栈上构建 -----> 确定为该应用使用的buildpack -----> 检测到Node.js应用 -----> 创建运行时环境 NPM_CONFIG_LOGLEVEL=error NODE_VERBOSE=false NODE_ENV=production NODE_MODULES_CACHE=true -----> 安装二进制文件 engines.node (package.json): 未指定 engines.npm (package.json): 未指定(使用默认版本) 解析node版本16.x... 下载并安装node 16.17.1... 使用默认npm版本:8.15.0 -----> 安装依赖 安装node模块 npm ERR! code 126 npm ERR! path /tmp/build_6f27fe6d/node_modules/@sencha/cmd npm ERR! command failed npm ERR! command sh /tmp/install-bad0c5cf.sh npm ERR! i [ext]: platform-install: @sencha/cmd v7.6.0 installed npm ERR! 在Linux系统中下载并运行Sencha Cmd需要JRE。 npm ERR! 本次运行的完整日志可在以下位置查看: npm ERR! /tmp/npmcache.ImKdt/_logs/2022-10-09T17_30_24_436Z-debug-0.log -----> 构建失败 很抱歉本次构建失败!您可以在此排查常见问题: https://devcenter.heroku.com/articles/troubleshooting-node-deploys 可能的问题: - package.json中未指定Node版本 https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version Love, Heroku ! 推送被拒绝,Node.js应用编译失败。 ! 推送失败
解决方法
1. 配置Heroku多Buildpack
Heroku支持同时加载多个buildpack,我们需要让系统先安装提供JRE的Java环境,再执行Node.js相关构建步骤,具体操作:
- 查看当前应用的buildpack配置:
heroku buildpacks - 添加官方Java buildpack作为第一个执行的buildpack:
heroku buildpacks:add --index 1 heroku/jvm - 确保Node.js buildpack已添加(若未添加则执行):
heroku buildpacks:add heroku/nodejs
2. 指定Node版本(可选但推荐)
根据日志提示,在项目的package.json中添加Node版本配置,避免版本兼容问题:
{ "engines": { "node": "16.x" } }
3. 重新推送应用
完成上述配置后,重新将代码推送到Heroku,构建流程会先安装JRE环境,再执行Sencha Cmd的编译操作。
内容的提问来源于stack exchange,提问作者christopher chapman
相关产品推荐
相关产品推荐

