gulp-imagemin icon indicating copy to clipboard operation
gulp-imagemin copied to clipboard

crashed due to could not load default plugin `mozjpeg` and no images minfied

Open GrassBlock1 opened this issue 1 year ago • 3 comments

as titled. My problem was like #377, but I correctly import the modules needed as shown in the gulp ESM.

my gulpfile.mjs
import gulp from "gulp";
import imagemin, {mozjpeg, optipng} from "gulp-imagemin";
import debug from "gulp-debug";


gulp.task('minify-img', function() {
    return (gulp.src(['./img/*', './img/*/*', "./img/*/*/*"])
        .pipe(debug(imagemin([
            optipng({optimizationLevel: 6}),
            mozjpeg({quality: 85, progressive: true}),
        ])))
        .pipe(gulp.dest('./opt/img')))
});

gulp.task("build", gulp.series("minify-img"));

But gulp-imagemin still crashed with:

TypeError in plugin "gulp-imagemin"
Message:
    function_ is not a function

I tried to debug with gulp-debug and run again, and finally I got gulp-imagemin: Could not load default plugin mozjpeg, and no images within the folder was minfied.

Does anybody has some solution for the issue?

GrassBlock1 avatar Jul 18 '23 10:07 GrassBlock1

I'm on Windows 11.

Latest version of imagemin and gulp. Getting the same error myself. I've tried so many different combinations of code to see if it's something on my end, but this does seem to be a bug.

My error log:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'imagemin-mozjpeg' imported from C:\Users\mzachdev\shopify-sites\gulpfile.mjs
    at new NodeError (node:internal/errors:405:5)
    at packageResolve (node:internal/modules/esm/resolve:887:9)
    at moduleResolve (node:internal/modules/esm/resolve:936:20)
    at defaultResolve (node:internal/modules/esm/resolve:1129:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36) {
  code: 'ERR_MODULE_NOT_FOUND'

mzachdev avatar Nov 20 '23 20:11 mzachdev

it's work for me, if you are use cnpm.

in package.json, you should remove optipng-bin, gulp-imagemin then run this:

rm -rf node_modules
npm install
cnpm i optipng-bin -D
cnpm i gulp-imagemin -D

luchanan avatar Mar 14 '24 09:03 luchanan

I have the same problem for Windows 10. It showed that your packeg use pngjs2 and it don't support it.

npm WARN deprecated [email protected]: This SVGO version is no longer supported. Upgrade to v2.x.x. npm WARN deprecated [email protected]: pngjs2 has now taken over the original pngjs package on npm. Please change to use pngjs dependency, version 2+. npm WARN cleanup Failed to remove some directories [ npm WARN cleanup [ npm WARN cleanup 'D:\\OSPanel\\domains\\sneakers.loc\\wp-content\\themes\\sneakers\\markup-template\\node_modules\\svgo', npm WARN cleanup [Error: EPERM: operation not permitted, rmdir 'D:\OSPanel\domains\sneakers.loc\wp-content\themes\sneakers\markup-template\node_modules\svgo\node_modules'] { npm WARN cleanup errno: -4048, npm WARN cleanup code: 'EPERM', npm WARN cleanup syscall: 'rmdir', npm WARN cleanup path: 'D:\\OSPanel\\domains\\sneakers.loc\\wp-content\\themes\\sneakers\\markup-template\\node_modules\\svgo\\node_modules' npm WARN cleanup } npm WARN cleanup ] npm WARN cleanup ] npm ERR! code 1 npm ERR! path D:\OSPanel\domains\sneakers.loc\wp-content\themes\sneakers\markup-template\node_modules\pngquant-bin npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node lib/install.js npm ERR! fs.js:44 npm ERR! } = primordials; npm ERR! ^ npm ERR! npm ERR! ReferenceError: primordials is not defined npm ERR! at fs.js:44:5 npm ERR! at req_ (D:\OSPanel\domains\sneakers.loc\wp-content\themes\sneakers\markup-template\node_modules\natives\index.js:143:24) npm ERR! at Object.req [as require] (D:\OSPanel\domains\sneakers.loc\wp-content\themes\sneakers\markup-template\node_modules\natives\index.js:55:10) npm ERR! at Object.<anonymous> (D:\OSPanel\domains\sneakers.loc\wp-content\themes\sneakers\markup-template\node_modules\decompress\node_modules\graceful-fs\fs.js:1:37) npm ERR! at Module._compile (node:internal/modules/cjs/loader:1369:14) npm ERR! at Module._extensions..js (node:internal/modules/cjs/loader:1427:10) npm ERR! at Module.load (node:internal/modules/cjs/loader:1206:32) npm ERR! at Module._load (node:internal/modules/cjs/loader:1022:12) npm ERR! at Module.require (node:internal/modules/cjs/loader:1231:19) npm ERR! at require (node:internal/modules/helpers:179:18) npm ERR! npm ERR! Node.js v20.12.2

I used the last version "gulp-imagemin": "^9.0.0", and "pngquant-bin": "^8.0.1",

BlackStar1991 avatar Apr 15 '24 18:04 BlackStar1991