Nuxt PWA项目运行yarn dev报图标不存在、退出码137错误如何解决?
问题原因
- 图标文件缺失报错:@nuxtjs/pwa 模块默认会读取项目
static/icon.png作为源文件,自动生成全尺寸PWA适配图标并缓存到node_modules/.cache/pwa目录。你当前项目未放置默认源图标,也未在配置中指定自定义图标路径,导致模块生成图标时找不到源文件,触发ENOENT报错。 - 进程被杀(退出码137):PWA模块生成高分辨率图标时需要占用大量内存,你当前运行环境的可用内存不足以支撑图标生成操作,进程被系统OOM(内存不足)守护进程直接终止,所以输出Killed和137退出码。
解决方法
1. 补全图标源配置
任选一种方式即可:
- 方式一:在项目根目录创建
static文件夹,放入一张尺寸不小于512*512px的PNG格式图标,命名为icon.png,使用模块默认读取路径。 - 方式二:在
nuxt.config.js中指定自定义图标路径:
// nuxt.config.js export default { pwa: { icon: { source: '~/static/你的图标文件名.png' } } }
2. 解决内存不足问题
根据你的使用场景选择对应方案:
开发环境场景
开发阶段不需要每次启动都生成全量图标,直接禁用开发环境的图标生成功能即可:
// nuxt.config.js export default { pwa: { icon: { // 仅生产环境开启图标生成 enabled: process.env.NODE_ENV === 'production' } } }
需要全量生成图标的场景
- 提升Node进程内存上限,修改
package.json中的启动命令:
{ "scripts": { "dev": "node --max-old-space-size=4096 node_modules/nuxt/bin/nuxt.js" } }
其中4096为给Node分配4G运行内存,可根据你的设备配置调整数值。
- 裁剪不需要的图标尺寸,减少内存消耗:
// nuxt.config.js export default { pwa: { icon: { // 仅保留需要的尺寸,去掉1242x2688这类超大尺寸适配 sizes: [64, 120, 144, 152, 192, 384, 512] } } }
配置修改完成后,删除 node_modules/.cache 目录,重新执行 yarn dev 即可正常启动。
内容的提问来源于stack exchange,提问作者Natan Santos
相关产品推荐
相关产品推荐

