首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决Gulp错误: imagemin.jpegtran不是函数

如何解决Gulp错误: imagemin.jpegtran不是函数
EN

Stack Overflow用户
提问于 2020-02-11 13:33:00
回答 2查看 1.8K关注 0票数 2

每当我试图使imagemin对任何类型的图像都有效时,我就会收到这个错误:

21:54:49开始‘imgmin’。

21:54:49 'imgmin‘在47 ms后出错

TypeError: imagemin.jpegtran不是一个函数

代码语言:javascript
复制
at imgmin (D:\Dropbox\Side Projects\JS learning\dev-gulp\gulpfile.js:92:26)

at bound (domain.js:419:14)

at runBound (domain.js:432:12)

at asyncRunner (D:\Dropbox\Side Projects\JS learning\dev-gulp\node_modules\async-done\index.js:55:18)

at processTicksAndRejections (internal/process/task_queues.js:75:11)

我目前正在使用:

  • 节点版本12.13.1
  • npm版本6.12.1
  • gullp cli版本: 2.2.0
  • gulp本地版本:4.0.2

F 210

这是我的gulpfile.js:

代码语言:javascript
复制
let mainDir = 'gulp project test';

let gulp = require('gulp'),
    browserSync = require('browser-sync').create(),
    reload = browserSync.reload,
    autoprefixer = require('gulp-autoprefixer'),
    sass = require('gulp-sass'),
    cleansCSS = require('gulp-clean-css'),
    sourcemaps = require('gulp-sourcemaps'),
    concat = require('gulp-concat'),
    imagemin = require('gulp-imagemin'),
    changed = require('gulp-changed'),
    uglyfi = require('gulp-uglify'),
    lineec = require('gulp-line-ending-corrector');

//set directories variables
let root = `../${mainDir}/`,
    scss = root + 'sass',
    js = root + 'src/js',
    cssDist = root + 'dist/css'
jsDist = root + 'dist/js',
    imgSRC = root + 'src/images/*',
    imgDest = root + 'dist/images/*';

//set watch files
let phpWatcher = root + '**/*php', //glob pattern
    styleWatcher = scss + '**/*.scss';


//set the order I want Gulp to concat JS files
let jsSRC = [
    js + 'file1.js',
    js + 'file2.js',
    js + 'file3.js',
    js + 'file4.js',
    js + 'file5.js',
    js + 'file6.js',
];

//set the order I want Gulp to concat CSS files
let cssSRC = [
    root + 'src/css/file1.css',
    root + 'src/css/file2.css',
    root + 'src/css/file3.css',
    root + 'src/css/file4.css',
    cssDist + 'style.css'
];


function css() {
    return gulp.src(scss + 'style.scss')
        .pipe(sourcemaps.init({
            loadMaps: true
        }))
        .pipe(sass({
            outputStyle: 'expanded'
        }).on('error', sass.logError))
        .pipe(autoprefixer('last 2 versions'))
        .pipe(sourcemaps.write())
        .pipe(lineec())
        .pipe(gulp.dest(cssDist))
}

function concatCSS() {
    return gulp.src(cssSRC)
        .pipe(sourcemaps.init({
            loadMaps: true,
            largefile: true
        }))
        .pipe(concat('style.min.css'))
        .pipe(cleansCSS())
        .pipe(sourcemaps.write('./maps/'))
        .pipe(lineec())
        .pipe(gulp.dest(cssDist));
}

function javascript() {
    return gulp.src(jsSRC)
        .pipe(concat('project.js'))
        .pipe(uglyfi())
        .pipe(lineec)
        .pipe(gulp.dest(jsDist));
}

function imgmin() {
    return gulp.src(imgSRC)
        .pipe(changed(imgDest))
        .pipe(imagemin([
            imagemin.gifsicle({
                interlaced: true
            }),
            imagemin.jpegtran({
                progressive: true
            }),
            imagemin.optipng({
                optimizationLevel: 5
            })
        ]))
        .pipe(gulp.dest(imgDest));
}

function watch() {
    browserSync.init({
        open: 'external',
        proxy: 'http://localhost/dev',
        port: 8080,
    });
    gulp.watch(styleWatcher, gulp.series([css, concatCSS]));
    gulp.watch(jsSRC, javascript);
    gulp.watch(imgSRC, imgmin);
    gulp.watch([phpWatcher, jsDist + 'project.js', cssDist + 'style.min.css'])
}


exports.css = css;
exports.concatCSS = concatCSS;
exports.javascript = javascript;
exports.imgmin = imgmin;
exports.watch = watch;


let build = gulp.parallel(watch);
gulp.task('default', build);

我发现有个人在gifsicle上犯了同样的错误,并通过重新安装插件来修复它,但是它对我无效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-15 09:31:29

我找到了答案,我把它写在这里,以防有人有同样的问题。imagemin.jpegtran已被imagemin.mozjpeg取代。此外,我还不得不安装mozjpeg (npm安装-save-dev imagemin-mozjpeg),因为在我编写时,它似乎不是与imagemin一起安装的。

票数 9
EN

Stack Overflow用户

发布于 2022-04-26 22:11:14

我有同样的问题,但它发生在高寒版本的节点(节点:16.11.1-阿尔松露3.14)在码头。

问题是缺少了一些OS库,并通过添加libs (bash、autoconf、libtool、libltdl、libpng-dev、lcms2-dev、GCC、g++、汽车制造商)来解决这个问题:

代码语言:javascript
复制
RUN apk add --update \ 
    bash \ 
    autoconf \ 
    libtool \ 
    libltdl \ 
    libpng-dev \ 
    lcms2-dev \ 
    gcc \ 
    g++ \ 
    automake \ 
    make \ 
    nasm \
&& rm -rf /var/cache/apk/*
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60170048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档