在CPanel部署Next.js项目时遭遇WebAssembly内存不足错误求助
问题描述
在CPanel部署Next.js网站时,执行next build命令触发内存不足错误:
returncode: 1 stdout: > haba@0.1.0 build > next build stderr: unhandledRejection RangeError: WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance at lazyllhttp (eval at requireWithFakeGlobalScope (/home/habadati/nodevenv/haba/20/lib/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js:64:3), <anonymous>:9972:32)
尝试通过SSH执行命令解决无效,执行启动命令NODE_ENV=production node server.js时同样报错:
returncode: 1 stdout: > haba@0.1.0 start > NODE_ENV=production node server.js stderr: undefined:9972 return await WebAssembly.instantiate(mod, { ^ RangeError: WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance at lazyllhttp (eval at requireWithFakeGlobalScope (/home/habadati/nodevenv/haba/20/lib/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js:64:3), <anonymous>:9972:32) Node.js v20.3.1
注:server.js来自Next.js Pages路由的自定义服务器官方文档。
解决方案
- 调整Node.js内存限制:在CPanel的Node.js管理器中添加环境变量
NODE_OPTIONS="--max-old-space-size=2048"(数值根据主机可用内存调整,2048代表2GB),或通过SSH执行export NODE_OPTIONS="--max-old-space-size=2048"后再执行构建/启动命令,提升Node.js可用内存配额。 - 降级Next.js版本:高版本Next.js对内存需求更高,尝试降级到稳定版,执行
npm install next@13.4.19,重新安装依赖后再次构建。 - 禁用Edge Runtime特性:若项目未使用Edge Runtime,在
next.config.js中添加配置:
同时检查所有页面文件,若存在module.exports = { experimental: { edgeRuntime: false } }export const runtime = 'edge',修改为export const runtime = 'nodejs'。 - 优化项目构建逻辑:
- 清理无用依赖:执行
npm prune移除未使用的包; - 开启增量构建:在
next.config.js中启用experimental: { incrementalCacheHandlerPath: true },减少重复构建的内存消耗; - 简化项目代码:移除未使用的组件、页面,减少构建时的资源占用。
- 清理无用依赖:执行
- 联系主机商升级资源:若以上方法均无效,说明当前CPanel主机的内存配额不足以支撑Next.js构建/运行,需联系服务商升级内存或更换更高配置的主机套餐。
内容的提问来源于stack exchange,提问作者Clinton Njiru
相关产品推荐
相关产品推荐

