From 3bee52cf2f85f090fed38fd5c73cca1341e99c68 Mon Sep 17 00:00:00 2001 From: Scott Bender Date: Fri, 19 Feb 2021 15:24:23 -0500 Subject: [PATCH 1/2] fix: make arpping an optional dependency Install fails on platforms where there is no binary available, but is not always needed --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5828b4c..3b90849 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ ] }, "dependencies": { - "arpping": "github:skydiver/arpping", "crypto-js": "^4.0.0", "delay": "^4.4.0", "node-fetch": "^2.6.1", @@ -63,5 +62,8 @@ "jest": "^26.5.3", "nock": "^12.0.3", "prettier": "^1.19.1" + }, + "optionalDependencies": { + "arpping": "github:skydiver/arpping" } } From 9703dce7c5bc00e14a6114e2af86fe2a69296d18 Mon Sep 17 00:00:00 2001 From: Scott Bender Date: Fri, 19 Feb 2021 15:41:06 -0500 Subject: [PATCH 2/2] fix: catch require arpping failures --- src/classes/Zeroconf.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/classes/Zeroconf.js b/src/classes/Zeroconf.js index 6167fda..4d2a430 100644 --- a/src/classes/Zeroconf.js +++ b/src/classes/Zeroconf.js @@ -1,5 +1,10 @@ const fs = require('fs'); -const arpping = require('arpping')({}); +let arpping + +try { + arpping = require('arpping')({}); +} catch ( err ) { +} class Zeroconf { /** @@ -9,13 +14,17 @@ class Zeroconf { */ static getArpTable(ip = null) { return new Promise((resolve, reject) => { - arpping.discover(ip, (err, hosts) => { - if (err) { - return reject(err); - } - const arpTable = Zeroconf.fixMacAddresses(hosts); - return resolve(arpTable); - }); + if ( !arpping ) { + reject(new Error('arpping is not installed')) + } else { + arpping.discover(ip, (err, hosts) => { + if (err) { + return reject(err); + } + const arpTable = Zeroconf.fixMacAddresses(hosts); + return resolve(arpTable); + }); + } }); }