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

MacOS下Node16环境gulp-imagemin运行报错如何解决

问题根因

gulp-imagemin v8及以上版本已改为纯ESM模块,不再支持CommonJS规范的require()导入方式,你之前的修改错误将动态import()返回的Promise对象直接当作imagemin函数使用,才会触发后续类型错误。

解决方案

你可以任选以下两种方案之一修复问题:

方案1:降级到支持CommonJS的v7版本(操作最简单,无需改代码)

直接运行如下命令安装v7版本的gulp-imagemin:

npm install --save-dev gulp-imagemin@7

安装完成后回退你之前对compress.js的修改,恢复const imagemin = require('gulp-imagemin');的写法即可正常运行。

方案2:适配新版ESM动态导入

保持使用最新版gulp-imagemin,修改compress.js里的compressAssets为异步函数,等待动态导入完成后再调用imagemin,修改后完整代码如下:

'use strict';

// Include gulp
const { src, dest } = require('gulp');

// Include Our Plugins
const rename = require('gulp-rename');

// Export our tasks.
module.exports = {
  // Compress svg/png/jpg files.
  compressAssets: async function() {
    // 等待ESM模块加载完成,取default属性为实际的imagemin函数
    const imagemin = (await import('gulp-imagemin')).default;
    return src([
      './source/patterns/{global,layout,components}/**/*{.png,.jpg,.svg}'
    ])
      .pipe(imagemin())
      .pipe(
        rename(function(path) {
          path.dirname = '';
          return path;
        })
      )
      .pipe(dest('./dist/images'));
  }
};

内容的提问来源于stack exchange,提问作者Søren Sjøstrøm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:42:02