概要
販売終了したdash buttonで何かしてみようということで、下記を参考にdash buttonのイベントを取得しようと環境を作った時の話。
とりあえずやってみる
少し前に使っていたnode.jsのバージョンがv6.8.1だったので、メジャーバージョン同じならDash Button for Nodeを入れれば動くだろうと試してみると見事にMACアドレス取得時に下記のエラーが発生。
エラー文言
dashボタンのMACを取得する際にnode.jsのバージョンが低いとボタン押下でエラーが発生する。
$ sudo npm run scan Scanning for DHCP requests and ARP probes on en0... /dash_button/node_modules/dash-button/build/MacAddresses.js:12 let hexStrings = numbers.map(decimal => decimal.toString(16).padStart(2, '0')); ^ TypeError: decimal.toString(...).padStart is not a function at numbers.map.decimal (/dash_button/node_modules/dash-button/build/MacAddresses.js:12:66) at Array.map (native) at Object.decimalToHex (/dash_button/node_modules/dash-button/build/MacAddresses.js:12:30) at Object.getEthernetSource (/dash_button/node_modules/dash-button/build/MacAddresses.js:8:25) at PcapSession.pcapSession.addListener.rawPacket (/dash_button/node_modules/dash-button/build/cli.js:44:53) at emitOne (events.js:96:13) at PcapSession.emit (events.js:188:7) at PcapSession.on_packet_ready (/dash_button/node_modules/pcap/pcap.js:99:10) at packet_ready (/dash_button/node_modules/pcap/pcap.js:44:14) at SocketWatcher.pcap_read_callback [as callback] (/dash_button/node_modules/pcap/pcap.js:64:45)
最初は以前node.jsを使った際の環境をそのまま使ったためv6.8.1で試してエラー発生。
その後いくつかバージョンを変更して最終的にv8.9.1(最新版)で正常起動・・・。(最初から最新版入れておけばよかった)
試したバージョンは下記の4つ。
バージョン | OK/NG |
---|---|
v0.12.18 | NG |
v6.8.1 | NG |
v6.11.3 | NG |
v8.9.1 | OK |
最後に
そして解決した後にdash-buttonのgithubを確認すると、最新版はNode 8で動作するという記載を見つける。
Dash Button runs on Node 8 and up on macOS and Linux.
何か起こったらとりあえず公式を見に行きましょうという教訓。