Node.js应用在Cyclic、Render等平台部署构建失败求助
Node.js应用部署至Cyclic、Render等平台均构建失败问题
将Node.js应用部署至Cyclic、Render、Railway等在线平台时,均出现构建失败错误,但本地使用相同构建与启动脚本可正常运行,调整脚本后问题仍未解决,日志显示脚本存在异常。
Cyclic平台构建日志
2023-01-01 06:36:21: [CYCLIC] Building... 2023-01-01 06:36:21: Build Configuration: Root Path: /api Output Path: /client Static Site: false Runtime: nodejs18.x [CYCLIC] cloning... 2023-01-01 06:36:22: From https://github.com/nishant-k1/quengenesis-llc * branch 520edf6bc9f2985a8dab86fc103237513b5f134e -> FETCH_HEAD 2023-01-01 06:36:22: HEAD is now at 520edf6 playing with deploy script 2023-01-01 06:36:22: [CYCLIC] verifying... 2023-01-01 06:36:23: [CYCLIC] using: node:v18.12.1 npm:8.19.2 runtime:nodejs18.x [CYCLIC] building from: /api 2023-01-01 06:36:23: [CYCLIC] installing dependencies from: package-lock.json 2023-01-01 06:36:23: npm 2023-01-01 06:36:23: WARN config production Use `--omit=dev` instead. 2023-01-01 06:41:35: npm 2023-01-01 06:41:35: ERR! code ERR_SOCKET_TIMEOUT npm ERR! errno ERR_SOCKET_TIMEOUT npm ERR! network request to https://npm.onservo.com/yargs-parser/-/yargs-parser-13.1.2.tgz failed, reason: Socket timeout npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly. See: 'npm help config' 2023-01-01 06:41:35: 2023-01-01 06:41:35: npm ERR! A complete log of this run can be found in: npm ERR! /tmp/nishant-k1-quengenesis-llc/'/tmp/nishant-k1-quengenesis-llc'/.npm/_logs/2023-01-01T01_02_38_762Z-debug-0.log 2023-01-01 06:41:35: npm 2023-01-01 06:41:35: notice npm notice New major version of npm available! 8.19.2 -> 9.2.0 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.2.0> npm notice Run `npm install -g npm@9.2.0` to update! npm notice 2023-01-01 06:41:35: [CYCLIC] Build Failed
Render平台构建日志
Jan 2 06:13:42 AM ==> Cloning from https://github.com/nishant-k1/quengenesis-llc... Jan 2 06:13:43 AM ==> Checking out commit bf9d9d9b6ebda4a28471717efacfc614cd64d2a5 in branch main Jan 2 06:13:47 AM ==> Running build command 'npm run build'... Jan 2 06:13:47 AM Jan 2 06:13:47 AM > server@0.0.0 build /opt/render/project/src/api Jan 2 06:13:47 AM > npm i && cd ../client && npm i && npm run build Jan 2 06:13:47 AM Jan 2 06:13:55 AM added 150 packages from 213 contributors and audited 152 packages in 7.958s Jan 2 06:13:55 AM Jan 2 06:13:55 AM 9 packages are looking for funding Jan 2 06:13:55 AM run `npm fund` for details Jan 2 06:13:55 AM Jan 2 06:13:55 AM found 8 vulnerabilities (1 low, 4 high, 3 critical) Jan 2 06:13:55 AM run `npm audit fix` to fix them, or `npm audit` for details Jan 2 06:14:27 AM npm ERR! code EINTEGRITY Jan 2 06:14:27 AM npm ERR! sha512-BeraOoH+EGGUPdujKplcmMjBSgUETZ82C6AinNSPFgBZgsWS8gSZRcGk7mpdftgZn4/7OYbsnMi9WDf7CoIhQA== integrity checksum failed when using sha512: wanted sha512-BeraOoH+EGGUPdujKplcmMjBSgUETZ82C6AinNSPFgBZgsWS8gSZRcGk7mpdftgZn4/7OYbsnMi9WDf7CoIhQA== but got sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==. (1932 bytes) Jan 2 06:14:27 AM npm ERR! code EINTEGRITY Jan 2 06:14:27 AM npm ERR! sha512-cflXkhRjOOCTvvdA/Bn5xKDaN2dvZwE+62hzazFPrIjC1WlKnIsrhHRK5UT8wID+MapfnDftzaRXNojhQZWvkg== integrity checksum failed when using sha512: wanted sha512-cflXkhRjOOCTvvdA/Bn5xKDaN2dvZwE+62hzazFPrIjC1WlKnIsrhHRK5UT8wID+MapfnDftzaRXNojhQZWvkg== but got sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==. (1516 bytes) Jan 2 06:14:27 AM npm ERR! code EINTEGRITY Jan 2 06:14:27 AM npm ERR! sha512-f7W8E/uDPEen4vTEImuNmxyeQ7zrNryVC/+9vpORSr9QVnregQUUfSl+5nNBsPMoJich4u9ISa3d79zJFaD9jA== integrity checksum failed when using sha512: wanted sha512-f7W8E/uDPEen4vTEImuNmxyeQ7zrNryVC/+9vpORSr9QVnregQUUfSl+5nNBsPMoJich4u9ISa3d79zJFaD9jA== but got sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==. (1587 bytes) Jan 2 06:14:30 AM Jan 2 06:14:30 AM npm ERR! A complete log of this run can be found in: Jan 2 06:14:30 AM npm ERR! /opt/render/.cache/_logs/2023-01-02T00_44_27_119Z-debug.log Jan 2 06:14:30 AM npm ERR! code ELIFECYCLE Jan 2 06:14:30 AM npm ERR! errno 1 Jan 2 06:14:30 AM npm ERR! server@0.0.0 build: `npm i && cd ../client && npm i && npm run build` Jan 2 06:14:30 AM npm ERR! Exit status 1 Jan 2 06:14:30 AM npm ERR! Jan 2 06:14:30 AM npm ERR! Failed at the server@0.0.0 build script. Jan 2 06:14:30 AM npm ERR! This is probably not a problem with npm. There is likely additional logging output above. Jan 2 06:14:30 AM Jan 2 06:14:30 AM npm ERR! A complete log of this run can be found in: Jan 2 06:14:30 AM npm ERR! /opt/render/.cache/_logs/2023-01-02T00_44_30_121Z-debug.log Jan 2 06:14:30 AM ==> Build failed 😞 Jan 2 06:14:30 AM ==> Generating container image from build. This may take a few minutes...
项目结构
部署时选择/api作为根目录,项目结构如下:
root api client
相关配置说明
- api的package.json脚本:build命令为
npm i && cd ../client && npm i && npm run build,同时包含start、dev等其他运行脚本 - client的package.json:包含dev、build等脚本,其中build用于构建前端静态文件
- 详细结构:根目录下分为api(后端服务)和client(前端应用)两个独立子目录
问题排查与解决方案
Cyclic平台:网络超时问题
日志明确显示ERR_SOCKET_TIMEOUT,是npm安装依赖时连接官方源超时导致。解决步骤:
- 在api目录下创建
.npmrc文件,添加国内镜像源:registry=https://registry.npmmirror.com/ - 提交该文件到GitHub,重新触发Cyclic构建
- 备选方案:在Cyclic的构建配置中,将依赖安装命令改为
npm install --registry=https://registry.npmmirror.com/
Render平台:依赖校验和不匹配(EINTEGRITY)
这是因为本地生成的package-lock.json与远程服务器下载的依赖校验值不一致,解决步骤:
- 本地删除api和client目录下的
package-lock.json和node_modules文件夹 - 分别进入api和client目录,执行
npm install重新生成lock文件 - 提交新的lock文件到GitHub,重新部署到Render
- 临时方案:在build命令中添加
--no-audit --no-fund跳过校验,但不推荐长期使用
通用优化建议
- 不要在build脚本中嵌套执行
npm i,建议分开配置:让平台先自动安装api依赖,再手动执行client的安装和构建命令 - 在api目录添加
.nvmrc文件指定Node.js版本(如18.12.1),确保本地与平台运行环境一致 - 考虑使用npm workspaces管理monorepo项目,简化多目录依赖安装流程
内容的提问来源于stack exchange,提问作者Nishant Kumar
相关产品推荐
相关产品推荐

