You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node >=18环境下Next.js构建出现malloc错误的原因及疑问

Node.js 18环境下Next.js 12构建触发malloc错误,未使用的sharp升级后问题解决

问题背景

原本运行在Node.js 16的Next.js 12项目,运行、构建均正常。迁移至Node.js 18(LTS版本)后:

  • next dev可正常运行
  • next build触发malloc错误,报错信息如下:
info  - Creating an optimized production build ..node(10686,0x17548b000) malloc: Incorrect checksum for freed object 0x1191c9c00: probably modified after being freed.
Corrupt value: 0x80f1f1f1
node(10686,0x17548b000) malloc: *** set a breakpoint in malloc_error_break to debug
error Command failed with signal “SIGABRT”.

环境差异

  • 可正常构建:基于Node.js 18 Alpine镜像的Docker环境
  • 构建失败:Mac M1 Ventura 13.4.1(Darwin 22.5.0)本地环境,多位同事复现相同问题

已尝试的无效操作

  • 切换Node.js版本至20
  • 重新安装nvm、使用n工具、通过.pkg安装Node.js
  • 移除webpack的自定义配置

临时解决方法

通过npx native-modules检测到项目依赖sharp@0.30.5(安装时会编译为.node原生扩展),将其升级至v0.32.1后,next build不再触发malloc错误。

核心疑问

sharp仅用于一个独立的图片处理NPM脚本,next build过程中并未被require()或调用,但升级它却解决了构建时的malloc错误。这不符合Node.js文档中「原生扩展仅在被require()时才会加载链接」的描述,请问这是什么原因?


内容的提问来源于stack exchange,提问作者Daniel Macak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:22:53