[英]Node.js imagemin on CentOS
我试图使用Node.js imagemin压缩我的服务器上的很多图像。 我喜欢使用imagemin因为我知道如何将它指向特定的目录。
我正在使用CentOS 6,当我运行我的文件时,我收到错误:
node_modules / imagemin / node_modules / imagemin-pngquant / node_modules / pngquant-bin / vendor / pngquant:/lib64/libc.so.6:未找到版本`GLIBC_2.14'
此外,当我安装imagemin与npm install imagemin
,我得到了一个错误,说:
错误:pngquant无法构建,请确保已安装libpng-dev
关于我能做些什么来解决这个问题的任何想法?
(问题事实上已经在评论中解决了 - 但为了完成和后代我发布了一个实际答案)。
错误:pngquant无法构建,请确保已安装libpng-dev
此错误意味着系统缺少libpng
开发库,这是安装imagemin
Node.JS模块所必需的。 要在CentOS 6上安装它,您需要发出以下命令:
yum install libpng-devel
请注意,软件包管理器(此处为yum
)和软件包名称( libpng-devel
)在不同的Linux发行版之间可能有所不同。
即使安装了libpng-devel
我也遇到了与CentOS 7相同的问题。 看来这个包在node_modules/pngquant-bin/vendor/pngquant
中node_modules/pngquant-bin/vendor/pngquant
了一个预编译的二进制程序,它与Linux安装(CentOS 7最新版)不兼容。
我已经通过将此二进制文件替换为可用于CentOS 7的二进制文件来解决该问题。
我首先用yum
安装官方包装pngquant
。 然后我正在安装节点模块。 如果您愿意,可以在安装操作之前删除node_modules
文件夹。 但不是必需的。
错误将照常显示(程序文件尚未替换):
⚠ The `node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly ⚠ pngquant pre-build test failed ℹ compiling from source ✖ Error: pngquant failed to build, make sure that libpng-dev is installed at ChildProcess.exithandler (child_process.js:206:12) at emitTwo (events.js:106:13) at ChildProcess.emit (events.js:191:7) at maybeClose (internal/child_process.js:877:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
但是,在替换二进制文件后,一切都应该没问题。
sh yum install libpng-devel pngquant npm install rm -rf node_modules/pngquant-bin/vendor/pngquant ln -s /usr/bin/pngquant node_modules/pngquant-bin/vendor/pngquant
之后你可以运行你喜欢的任何命令,“imagemin:dynamic”等。它应该可以正常工作。
一般来说,问题似乎在pngquant-bin
节点包内。 此解决方案也可能有助于其他Linux发行版。
解决方案本身是使用OS包管理器安装官方支持的pngquant
版本 ,并在安装后替换pngquant-bin
vendor文件夹中的二进制文件。
此外,最近有一个问题仍然与pngquant
npm包有关。 它似乎有一个错误的发布 - 将package.json
所需的pngquant
包锁定到旧版本(最后正确运行的版本)。
以前的解决方案对我不起作用。 我正在使用centos 7.4
执行时执行
# npm install
我收到了错误:
✖错误:pngquant无法构建,请确保已安装libpng-dev
在尝试安装libpng-devel
,它说它已经安装好了。
解
如果使用旧版本,请更新nodejs和npm版本。
我已更新到
Nodejs版本
[root@hosting ~]# node -v
v8.10.0
npm版本
[root@hosting ~]# npm -v
5.7.1
检查服务器上安装的libpng-devel。
[root@hosting ~]# rpm -qa |grep libpng
的libpng-1.5.13-7.el7_2.x86_64
的libpng-devel的-1.5.13-7.el7_2.x86_64
如果您使用的是epel repo,那么它将安装最新版本。 有关更多libpng发布检查
[root@hosting ~]# yum list |grep libpng
我安装了
yum install libpng12-1.2.50-10.el7.x86_64 libpng12-devel-1.2.50-10.el7.x86_64
移动节点模块
mv node_modules node_modules_bak
然后输入
# npm install
以下是我为我的案例解决问题的方法:
删除node_modules
:
rm -rf node_modules
安装以下依赖项:
sudo dnf install libpng-devel pngquant gcc make libpng12 libpng12-devel
重建依赖项。 我用yarn
:
yarn
在我的情况下,我在Amazon WS上使用CentOS实例,我在这里面临同样的问题。 我通过安装libpng12和libpng12-devel(yum install libpng12 libpng12-devel)来解决它,然后运行yarn install(或npm install)并且包安装正确。
只是这个!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.