docker - 优化图像时 gulp imagimine 插件 throwinf 错误
问题描述
我有这样的任务
gulp.task('images', () => {
return gulp.src('assets/images/**/*')
.pipe($.cache($.imagemin()))
.pipe(gulp.dest('public/build/images'));
});
.pipe($.cache($.imagemin()))
它为我在这一行中抛出错误:
events.js:167
throw er; // Unhandled 'error' event
^
Error: write callback called multiple times
at DestroyableTransform.afterTransform (/var/www/vhosts/devgenix/node_modules/readable-stream/lib/_stream_transform.js:84:31)
at EventEmitter.signals.on.err (/var/www/vhosts/devgenix/node_modules/gulp-cache/lib/index.js:451:7)
at EventEmitter.emit (events.js:182:13)
at DestroyableTransform.onError (/var/www/vhosts/devgenix/node_modules/gulp-cache/lib/index.js:288:15)
at Object.onceWrapper (events.js:273:13)
at DestroyableTransform.emit (events.js:187:15)
at Immediate.<anonymous> (/var/www/vhosts/devgenix/node_modules/through2-concurrent/through2-concurrent.js:37:14)
at runCallback (timers.js:706:11)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
但对于他们机器上的其他开发人员来说,一切正常。
我正在使用预装节点(其他开发人员没有)的自定义 alpine docker 容器下运行所有代码,所以这可能是一个问题,我只需要安装一些缺少的依赖项,但我不知道出了什么问题。
我的 docker 文件实际上是用于带节点的 PHP 的,这里是 docker 文件内容:
FROM php:7.1-fpm-alpine
ENV ZMQ_VERSION 4.3.1
ENV BUILD_DEPS autoconf file gcc libc-dev make g++ pkgconf re2c git
RUN apk add --update --no-cache --virtual .build-deps $BUILD_DEPS
# Error code: 127
RUN apk add --no-cache --virtual .php-build-deps \
nasm \
libsodium \
freetype-dev \
libmcrypt-dev \
postgresql-dev \
libxml2-dev \
zlib-dev cyrus-sasl-dev libmemcached-dev \
# the next line is for node and npm packages (node-sass requires python/make/g++ to build something)
python \
&& apk add --update nodejs nodejs-npm \
# for GD
bash \
freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev \
# just good to have installed
ca-certificates wget \
## Install git (we'll never delete it)
#&& apk add --no-cache git \
&& docker-php-ext-configure gd \
--with-gd \
--with-freetype-dir=/usr/include/ \
--with-png-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ \
&& NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \
## Installable modules
&& docker-php-ext-install -j${NPROC} iconv mcrypt bcmath pdo_mysql opcache pgsql pdo_pgsql soap pcntl exif zip gd \
&& apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev \
## Memcached
&& git clone https://github.com/php-memcached-dev/php-memcached.git \
&& cd php-memcached \
&& git checkout php7 \
&& phpize \
&& ./configure --disable-memcached-sasl \
&& make \
&& cp modules/memcached.so $(php-config --extension-dir) \
&& docker-php-ext-enable memcached \
## Composer
&& cd ~ \
&& curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
## Gulp
&& npm install -g gulp \
## Cleanup
&& rm -rf /var/cache/apk/*
RUN docker-php-ext-configure calendar && docker-php-ext-install calendar
ADD www.conf /usr/local/etc/php-fpm.d
ADD php-fpm.conf /usr/local/etc
ADD php.ini /usr/local/etc/php/
WORKDIR /var/www/vhosts/devgenix/
#EXPOSE 22
CMD ["php-fpm", "--fpm-config", "/usr/local/etc/php-fpm.conf"]
也许有人知道为什么它对我不起作用?谢谢!
更新
npm 版本:6.4.1 gulp 版本:3.9.1 gulp-imagemin 版本:4.1.0
解决方案
libjpeg-turbo libjpeg-turbo-dev libpng libpng-dev automake
我通过将依赖项添加到我的 docker 文件来解决这个问题
推荐阅读
- java - FileNotFoundException(文件名、目录名或卷标语法不正确)
- python - Pandas 中的矢量化操作
- android - 生成签名的 APK - 未定义产品风味
- regex - 正确的正则表达式以查找包含两个或三个单词的字符串
- hyperledger-fabric - 从超级账本结构中的账本中删除状态数据库
- python - Packman 碰撞检测
- android - 在初始屏幕中隐藏 Android PWA 标题
- python - 如何在 Python 中检测鼠标滚动和鼠标位置,然后对其进行一些操作?
- sql-server - 无法使用 CONCAT、COALESCE 和 ISNULL 在 SQL 中连接 NULL 值
- go - 创建具有值的结构实例