NodeJS无法识别ClamAV?nodeClam实例化配置问题求助
NodeClam配置错误排查:ClamAV扫描工具无法激活
问题描述
我想用ClamAV实现文件上传流程的病毒扫描,当前用以下代码实例化nodeClam:
const nodeClam = require('clamscan'); ... const clamScan = new nodeClam().init({ debug_mode: true, preference: 'clamscan', clamdscan: { path: '/usr/bin/clamscan', local_fallback: true, config_file: '/etc/clamav/clamd.conf', scan_archives: true, active: true, port: 3310 }, });
运行时出现错误:
/app/node_modules/clamscan/index.js:241 const err = new NodeClamError( ^ NodeClamError: No valid & active virus scanning binaries are active and available and no host/socket option provided! at /app/node_modules/clamscan/index.js:241:41 { data: {}, date: 2023-04-14T18:35:34.764Z }
但本地执行clamscan命令完全正常:
$ clamscan /tmp/eicarcom2.zip /tmp/eicarcom2.zip: Win.Test.EICAR_HDB-1 FOUND ----------- SCAN SUMMARY ----------- Known viruses: 8661879 Engine version: 0.103.8 Scanned directories: 0 Scanned files: 1 Infected files: 1 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 14.861 sec (0 m 14 s) Start Date: 2023:04:14 15:08:37 End Date: 2023:04:14 15:08:52
请问我的nodeClam实例化配置是否存在遗漏?
问题根源
你把独立扫描工具clamscan的配置错误放到了clamdscan节点下,这是核心问题:
clamdscan配置项是给ClamAV守护进程(clamd)用的,对应通过网络/套接字调用扫描的场景- 你实际要用的是本地二进制文件
clamscan,需要单独配置clamscan对象
修正后的配置
const nodeClam = require('clamscan'); ... const clamScan = new nodeClam().init({ debug_mode: true, preference: 'clamscan', // 指定优先使用clamscan clamdscan: { active: false // 不用clamd守护进程就直接禁用 }, clamscan: { // 单独配置clamscan参数 path: '/usr/bin/clamscan', config_file: '/etc/clamav/clamd.conf', scan_archives: true, active: true // 激活clamscan } });
额外检查点
- 确认Node.js进程对
/usr/bin/clamscan有执行权限,可通过chmod +x /usr/bin/clamscan或调整进程用户组解决 - 开启
debug_mode: true后,查看详细日志,确认nodeClam是否能正确找到并调用clamscan二进制文件 - 若仍有问题,可尝试简化配置,只保留
path和active两个必要参数,逐步排查其他配置项的影响
内容的提问来源于stack exchange,提问作者goterpsgo
相关产品推荐
相关产品推荐

