在 运行 `gulp` 命令中获取 ` Error [ERR_REQUIRE_ESM]`

Getting ` Error [ERR_REQUIRE_ESM]` while running `gulp` command

我是 Gulp 的新手,正在尝试自动执行一些任务。这是我的环境设置:npm version: 8.1.0node version 17.0.1gulp CLI version 2.3.0gulp version 4.0.2

这是我的 gulpfile.js:

// list of dependencies ( things require to run the below funcitions)
const { src, dest, watch, series } = require('gulp');
const sass = require('gulp-sass');
const prefix = require('gulp-autoprefixer');
const minify = require('gulp-clean-css');
const terser = require('gulp-terser');
const imagemin = require('gulp-imagemin');
const imagewebp = require('gulp-webp');



// create functions


// SCSS
function compilescss() {
    return src('src/scss/*.scss')
        .pipe(sass())
        .pipe(prefix('last 2 versions'))
        .pipe(minify())
        .pipe(dest('/dist/css'))
}


// JS
function jsmin(){
    return src('src/js/*.js')
        .pipe(terser())
        .pipe(dest('dist/js'))
}

// images
function optimizeimg() {
    return src('src/img/*.{jpg,png}')
        .pipe(imagemin([
            imagemin.mozjpeg({quality: 80, progressive: true}),
            imagemin.optipng({optiminzationLevel: 2})
        ]))
        .pipe(dest('dist/img'))
}


// webp images
function webpImage() {
    return src('dist/img/*.{jpg, png}')
        .pipe(imagewebp())
        .pipe('dist/img')
}


// create watchlist
function watchTask(){
    watch('src/scss/*.scss', compilescss);
    watch('src/js/*.js', jsmin);
    watch('src/img/*.{jpg,png}', optimizeimg);
    watch('dist/img/*.{jpg,png}', webpImage);
}



// default gulp
exports.default = series(
    compilescss,
    jsmin,
    optimizeimg,
    webpImage,
    watchTask
);

当我尝试在终端中执行 运行 gulp 命令时。我收到类似 - Error [ERR_REQUIRE_ESM]: require() of ES Module E:\Projects\portfolio\node_modules\gulp-imagemin\index.js from E:\Projects\portfolio\gulpfile.js not supported.

的错误

我试过这样的解决方案 - 在 package.json 中添加 type:"module" 而不是 require() 使用 import 但我无法使其工作。那么我该如何解决这个问题???谢谢!

gulp-imagemin 8.0.0 及更高版本现在仅支持 ESM。您可以将 gulp-imagemin 降级到 7.1.0,这是 commonjs,它应该可以正常工作。

This package is now pure ESM. Please read this.

https://github.com/sindresorhus/gulp-imagemin/releases/tag/v8.0.0