解决NodeJs gm模块报错{ [Error: Command failed: aaЧaaaa ] code: 4, signal: null }

问题:


我在Window 8 系统上 Nodejs平台中使用gm模块处理图片时,如果不安装、安装imageGagick.exe版本不对或安装选项不对时都会报类似于“{ [Error: Command failed: aaЧaaaa ] code: 4, signal: null }”的错。


我这里试了mageMagick-6.2.7-6-Q16-windows-dll.exe和ImageMagick-7.0.0-0-Q8-x64-dll.exe、ImageMagick-7.0.0-0-Q8-x64-static.exe、ImageMagick-7.0.0-0-Q16-x64-dll.exe

4个版本的情况。


注意:后面三个7.0版本安装时必须勾选"Install legacy utilities(e.g. convert)"选项,否则依然会报错,而ImageMagick-6.2.7-6-Q16-windows-dll.exe默认安装即可


另外,ImageMagick-6.9.2-8-Q16-x64-static.exe安装时没有"Install legacy utilities(e.g. convert)"选项,安装完后会报错。


大家可以试试其他版本


下面介绍gm模块使用


1、正确在电脑上安装imageMagick组件

2、npm install gm

3、var gm=require('gm').subClass({ imageMagick : true });

4、压缩原图并生成压缩后的新图

 gm('public/images/chat/abc.jpg')
        .resize(240, 240,'!')  //压缩为240*240     
        .write('public/images/chat/abc_new.jpg', function (err) {
            if (!err)
                console.log('done');
            else
            {
                console.log(err);
            }

        });

5、压缩原图并返回文件流输出到客户端

 gm1('public/images/chat/abc.jpg')
        .resize(240, 240,'!')
        .toBuffer(function(err,data){
            if(!err)
            {
                res.set('Content-Type','image/png');
                res.send(data);
            }
            else
            {
                console.log(err);
            }}
        )
       

Node.js中,`net`模块的错误`Uncaught Error: read ECONNRESET`通常发生在客户端断开连接时,服务器尝试读取数据,但是连接已经关闭。这种情况可能由多种原因引起,比如超时、网络中断、对方主动关闭等。 要解决这个问题,可以按照以下步骤检查并调整代码: 1. **处理连接异常**:在接收数据时添加错误处理,捕获`read ECONNRESET`异常。例如: ```javascript const net = require('net'); const server = net.createServer((socket) => { socket.on('data', (data) => { try { // 解析接收到的数据 const parsedData = JSON.parse(data); // ... 处理数据 ... } catch (error) { if (error.code === 'ECONNRESET') { console.error(`Client disconnected: ${error.message}`); socket.destroy(); // 关闭socket防止资源泄漏 } else { throw error; // 其他未知错误直接抛出 } } }); socket.on('error', (error) => { if (error.code === 'ECONNRESET') { console.error(`Connection lost: ${error.message}`); } else { console.error(error); // 其它错误日志 } }); }); server.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. **设置合理的连接超时**:如果你正在建立一个长连接,考虑设置适当的`setTimeout`来检测连接是否保持活跃,如果超过一定时间未接收数据,则关闭连接。 3. **客户端错误处理**:如果是客户端发起的请求导致的`ECONNRESET`,确保客户端正确地关闭连接,避免意外断开。 4. **检查网络状况**:确认网络环境稳定,并且双方都可以正常访问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值