部署至DigitalOcean时Node版本解析错误的排查求助
部署Node.js应用到DigitalOcean构建失败排查
问题详情
我尝试将GitHub上的应用部署至DigitalOcean应用服务器,但构建失败。构建日志如下:
[2022-12-05 11:33:05] ╭──────────── git repo clone ───────────╼ [2022-12-05 11:33:05] │ › fetching app source code [2022-12-05 11:33:05] │ => Selecting branch "master" [2022-12-05 11:33:06] │ => Checking out commit "079ec218fe19fe3c2f73cce87cf61776e1f50dfa" [2022-12-05 11:33:06] │ [2022-12-05 11:33:06] │ ✔ cloned repo to /workspace [2022-12-05 11:33:07] ╰────────────────────────────────────────╼ [2022-12-05 11:33:07] [2022-12-05 11:33:07] › configuring build-time app environment variables: [2022-12-05 11:33:07] KBOARDS_APP_KEY LOCAL_BASE_URL [2022-12-05 11:33:07] [2022-12-05 11:33:07] › configuring custom build command to be run at the end of the build: [2022-12-05 11:33:07] │ npm run build [2022-12-05 11:33:07] [2022-12-05 11:33:07] ╭──────────── buildpack detection ───────────╼ [2022-12-05 11:33:08] │ Detected the following buildpacks suitable to build your app: [2022-12-05 11:33:08] │ [2022-12-05 11:33:08] │ heroku/nodejs-engine v0.5.1 [2022-12-05 11:33:08] │ digitalocean/node v0.3.4 (Node.js) [2022-12-05 11:33:08] │ digitalocean/procfile v0.0.3 (Procfile) [2022-12-05 11:33:08] │ digitalocean/custom v0.1.1 (Custom Build Command) [2022-12-05 11:33:08] │ [2022-12-05 11:33:08] │ For documentation on the buildpacks used to build your app, please see: [2022-12-05 11:33:08] │ [2022-12-05 11:33:08] │ Node.js v0.3.4 https://do.co/apps-buildpack-node [2022-12-05 11:33:08] ╰─────────────────────────────────────────────╼ [2022-12-05 11:33:08] [2022-12-05 11:33:08] ╭──────────── app build ───────────╼ [2022-12-05 11:33:09] │ ---> Node.js Buildpack [2022-12-05 11:33:09] │ ---> Installing toolbox [2022-12-05 11:33:09] │ ---> - jq [2022-12-05 11:33:09] │ ---> - yj [2022-12-05 11:33:09] │ ---> Getting Node version [2022-12-05 11:33:09] │ ---> Resolving Node version [2022-12-05 11:33:10] │ ERROR: failed to build: exit status 1 [2022-12-05 11:33:11] │ [2022-12-05 11:33:11] │ [2022-12-05 11:33:11] │ For documentation on the buildpacks used to build your app, please see: [2022-12-05 11:33:11] │ [2022-12-05 11:33:11] │ Node.js v0.3.4 https://do.co/apps-buildpack-node [2022-12-05 11:33:11] │ [2022-12-05 11:33:11] │ ✘ build failed
我的package.json中包含如下声明:
"version":"0.0.0", "engines": { "node": "^18.6.0", "npm": "^8.14.0" },
DigitalOcean应用拓扑结构如下:
databases: - engine: PG name: kbdb num_nodes: 1 size: professional-xs version: "12" envs: - key: LOCAL_BASE_URL scope: RUN_AND_BUILD_TIME value: ${APP_URL} name: kboards-staging region: fra services: - build_command: npm run build environment_slug: node-js envs: - key: DATABASE_URL scope: RUN_TIME value: ${kbdb.DATABASE_URL} github: branch: master repo: zpiecuch81/kBoards http_port: 8080 instance_count: 1 instance_size_slug: professional-s name: kboards routes: - path: / run_command: npm start source_dir: /
错误描述「ERROR: failed to build: exit status 1」参考价值有限,我不清楚问题所在。该应用在本地可正常运行,部署至Heroku服务器也能正常工作。请问问题根源可能是什么?有人遇到过类似问题吗?
另外:我曾三次尝试在DigitalOcean社区提问页面发布该问题,每次看起来都发布成功了,但之后始终找不到我的帖子:(
排查方向
- Node.js版本兼容性问题:你指定的Node.js版本是
^18.6.0,而DigitalOcean使用的Node.js buildpack版本v0.3.4对Node.js 18.x的支持可能不完善。可以尝试修改engines里的Node版本为18.x,或者在项目根目录添加.nvmrc文件写入18.6.0强制指定版本。 - 构建依赖或环境变量问题:检查
KBOARDS_APP_KEY等构建时环境变量是否正确赋值;可以修改build_command为npm install --verbose && npm run build,查看详细的依赖安装报错信息,排查是否有依赖缺失或权限问题。 - Buildpack冲突问题:日志中同时检测到
heroku/nodejs-engine和digitalocean/node两个Node相关buildpack,可能存在冲突。可以在DigitalOcean应用设置中手动指定只使用digitalocean/nodebuildpack。 - 缓存问题:尝试清除DigitalOcean应用的构建缓存后重新触发部署,避免旧依赖或版本残留导致的问题。
内容的提问来源于stack exchange,提问作者zap
相关产品推荐
相关产品推荐

