Vite与SvelteKit:网站无响应白屏且JavaScript堆内存溢出
问题描述
执行npm run dev运行SvelteKit基础骨架应用时,打开localhost:5173后终端立即冻结,网站持续加载直至出现JavaScript堆内存不足的致命错误,错误栈如下:
<--- JS stacktrace ---> FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory 1: 0x7f8bac93f268 node::Abort() [/usr/lib64/libnode.so.93] 2: 0x7f8bac82cb89 [/usr/lib64/libnode.so.93] 3: 0x7f8badb36a00 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/lib64/libnode.so.93] 4: 0x7f8badb36dc7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/lib64/libnode.so.93] 5: 0x7f8badcf67e5 [/usr/lib64/libnode.so.93] 6: 0x7f8badd0c654 [/usr/lib64/libnode.so.93] 7: 0x7f8badd0e749 v8::internal::Heap::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/lib64/libnode.so.93] 8: 0x7f8badd0e7d7 v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/lib64/libnode.so.93] 9: 0x7f8badccefcd v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/usr/lib64/libnode.so.93] 10: 0x7f8bae06740a v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/usr/lib64/libnode.so.93] 11: 0x7f8bada31cf9 [/usr/lib64/libnode.so.93]
最后一条vite --debug日志显示app.css已加载。
解决方案
1. 临时提升Node.js内存限制
直接在运行开发命令时指定更大的堆内存额度,比如设置为4GB:
node --max-old-space-size=4096 node_modules/vite/bin/vite.js dev
也可以修改package.json中的dev脚本,后续直接用npm run dev执行:
{ "scripts": { "dev": "node --max-old-space-size=4096 node_modules/vite/bin/vite.js dev" } }
2. 校验依赖兼容性并重置依赖
- 确认SvelteKit、Vite与Node.js版本匹配,可参考项目
package.json的engines字段要求。 - 更新所有依赖到稳定版:
npm update
或者彻底重置依赖:
rm -rf node_modules package-lock.json npm install
3. 排查内存泄漏点
- 检查项目代码是否存在无限循环、大量递归,或开发模式下意外加载过量资源的情况。
- 检查
vite.config.js/vite.config.ts中的插件或配置,是否有重复处理资源的不合理设置。
4. 切换Node.js LTS版本
若当前Node.js版本过新或过旧,使用nvm切换至长期支持版(LTS):
nvm install --lts nvm use --lts
内容的提问来源于stack exchange,提问作者Basic Coder
相关产品推荐
相关产品推荐

