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

Vercel部署Next.js应用时出现mozjpeg命令执行失败报错如何解决?

问题根因

构建失败与moment依赖、图片引用路径无关,核心报错来自mozjpeg包安装环节:Vercel默认构建环境缺少ZLIB 1.2.9、nasm等底层系统依赖,无法编译imagemin-mozjpeg所需的二进制文件,最终触发构建中断。

解决方案(按优先级排序)

方案1:替换为Next.js原生图片优化能力(最稳定)

你使用的Next.js 11已经内置成熟的图片优化能力,无需依赖第三方next-optimized-images插件,改造成本最低:

  • 卸载冗余依赖
npm uninstall imagemin-mozjpeg imagemin-optipng next-optimized-images react-optimized-image lqip-loader webp-loader
  • 修改next.config.js配置,合并重复的webpack逻辑,将图片域名配置迁移到原生字段:
const nextConfig = {
  images: {
    domains: ["mars.nasa.gov", "www.nasaspaceflight.com"],
  },
  webpack: (config, { dev, isServer }) => {
    if (isServer) {
      require("./scripts/sitemap-common");
    }
    // 客户端生产构建替换React为Preact逻辑保留
    if (!dev && !isServer) {
      Object.assign(config.resolve.alias, {
        react: "preact/compat",
        "react-dom/test-utils": "preact/test-utils",
        "react-dom": "preact/compat",
      });
    }
    return config;
  },
};

module.exports = nextConfig;
  • 页面内原有优化图片组件替换为Next.js原生next/image即可,public目录的图片直接用根路径引用。

方案2:锁定兼容版本的mozjpeg

如果需要保留next-optimized-images的现有功能,可强制锁定低版本兼容的mozjpeg:

  • 如果你使用yarn,在package.json中新增resolutions字段:
"resolutions": {
  "mozjpeg": "7.1.0"
}
  • 如果你使用npm,在package.json中新增overrides字段:
"overrides": {
  "mozjpeg": "7.1.0"
}
  • 删除node_modules和 lock文件后重新安装依赖,再提交部署即可。

方案3:临时禁用图片压缩(适合紧急上线)

在next-optimized-images配置中新增关闭压缩的参数,跳过mozjpeg编译环节:

// next.config.js中plugins部分修改为
[
  optimizedImages,
  {
    optimizeImages: false,
    domains: ["mars.nasa.gov", "www.nasaspaceflight.com"],
  },
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:06:05