Vite项目在Dokku构建时卡在transforming阶段失败
Vite项目Dokku构建失败:"type-check" exited with 137
问题描述
本地执行vite build及DigitalOcean PaaS平台均可正常构建Vite项目,但部署到Dokku平台时,构建进程卡在transforming...阶段后被终止,报错"type-check" exited with 137,导致构建失败。
完整构建日志
remote: -----> 清理中... remote: -----> 基于herokuish构建应用 remote: -----> 向构建环境添加BUILD_ENV... remote: BUILD_ENV添加成功 remote: -----> 检测到Node.js应用 remote: remote: -----> 创建运行时环境 remote: remote: NPM_CONFIG_LOGLEVEL=error remote: NODE_VERBOSE=false remote: NODE_ENV=production remote: NODE_MODULES_CACHE=true remote: remote: -----> 安装二进制文件 remote: engines.node (package.json): 未指定 remote: engines.npm (package.json): 未指定(使用默认版本) remote: remote: 解析Node版本20.x... remote: 下载并安装Node 20.11.0... remote: 使用默认npm版本:10.2.4 remote: remote: -----> 安装依赖 remote: 安装Node模块 remote: remote: 已添加786个包,在38秒内完成787个包的审计 remote: remote: 144个包正在寻求资金支持 remote: 运行`npm fund`查看详情 remote: remote: 42个漏洞(37个中等,5个高危) remote: remote: 要处理无需关注的问题,请运行: remote: npm audit fix remote: remote: 部分问题需要审核,可能需要选择不同的依赖。 remote: 运行`npm audit`查看详情。 remote: npm通知 remote: npm通知:有新版本的npm可用!10.2.4 -> 10.5.0 remote: npm通知:更新日志:<https://github.com/npm/cli/releases/tag/v10.5.0> remote: npm通知:运行`npm install -g npm@10.5.0`进行更新! remote: npm通知 remote: remote: -----> 构建 remote: 执行构建 remote: remote: > app@0.2.0 build remote: > run-p type-check build:only remote: remote: remote: > app@0.2.0 type-check remote: > vue-tsc --noEmit remote: remote: remote: > app@0.2.0 build:only remote: > vite build remote: remote: vite v4.5.0 为生产环境构建中... remote: transforming... remote: Killed remote: ERROR: "type-check" exited with 137. remote: remote: -----> 构建失败 remote: remote: 很抱歉构建失败!您可以在此排查常见问题: remote: https://devcenter.heroku.com/articles/troubleshooting-node-deploys remote: remote: 可能的问题: remote: remote: - package.json中未指定Node版本 remote: https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version remote: remote: 此致, remote: Heroku remote: remote: ! 应用构建过程失败 remote: ! 移除无效镜像标签 dokku/app:latest remote: ! 应用构建失败
解决方案
退出码137表明进程因内存不足被系统强制终止,针对Dokku平台的解决方法如下:
增加Node.js内存限制:通过配置NODE_OPTIONS增大Node可用内存:
dokku config:set <你的应用名称> NODE_OPTIONS="--max-old-space-size=4096"调整Dokku构建容器内存:直接修改构建容器的内存配额:
dokku docker-options:add <你的应用名称> build "-m 4g"串行执行构建与类型检查:当前使用
run-p并行执行type-check和vite build会加倍占用内存,改为串行执行:
修改package.json中的scripts字段:"scripts": { "build": "npm run type-check && npm run build:only", "type-check": "vue-tsc --noEmit", "build:only": "vite build" }优化类型检查性能:
- 在tsconfig.json中缩小
include范围,排除无需检查的文件 - 给vue-tsc添加
--skipLibCheck参数跳过第三方库类型检查:"type-check": "vue-tsc --noEmit --skipLibCheck" - 升级vue-tsc、typescript到最新版本,利用性能优化
- 在tsconfig.json中缩小
指定Node.js版本:按照日志提示,在package.json中添加engines字段:
"engines": { "node": "20.x", "npm": "10.x" }
内容的提问来源于stack exchange,提问作者Elyas Behroozizade
相关产品推荐
相关产品推荐

