使用Node.js在RPi上播放本地文件

我有一个树莓派设置了一个Node.js应用程序,当它看到从亚马逊的Dashbuttonbutton时,响应。 它原本应该是从https://github.com/initialstate/silent-doorbell无声门铃,但我想只是让它播放本地声音文件。 我认为应该很容易,但是我对编码的经验不足,使我只能尝试在互联网上find的新东西。

我可以从terminal播放下面的文件,它玩的很好:

$ omxplayer example.mp3 

但是,不pipe我怎么试着把它放在Node.js应用程序中,并按下Dashbutton时触发它将不起作用。

 var dash_button = require('node-dash-button'), dash = dash_button('XX:XX:XX:XX:XX:XX'), //REPLACE WITH YOUR ADDRESS exec = require('child_process').exec; Omx = require('node-omxplayer'); player = Omx('~/node_modules/node-dash-button/example.mp3'); let spawn = require('child_process').spawn; dash.on('detected', function() { console.log('Button pushed!'); player.play(); }); 

当我运行与我的最新如上,我得到这个:

 /home/pi/node_modules/node-dash-button/doorbell.js:7 let spawn = require('child_process').spawn; ^^^^^ SyntaxError: Unexpected identifier at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3 

在将Node.js升级到@Quentinbuild议的最新版本后,使用本站的主要版本升级说明http://thisdavej.com/upgrading-to-more-recent-versions-of-node-js-on-the -raspberry-pi /我能够通过这个。 现在我不能过去如何正确使用omplayer。 在Node.js升级之后运行相同的代码时,现在在按下Amazon Dashbutton之后会出现此错误,然后崩溃应用程序:

 pi@raspberrypi:~/node_modules/node-dash-button $ sudo node doorbell.js Button pushed! /home/pi/node_modules/node-omxplayer/index.js:103 throw new Error('Player is closed.'); ^ Error: Player is closed. at writeStdin (/home/pi/node_modules/node-omxplayer/index.js:103:10) at EventEmitter.Omx.omxplayer.play (/home/pi/node_modules/node-omxplayer/index.js:133:27) at Readable.<anonymous> (/home/pi/node_modules/node-dash-button/doorbell.js:13:12) at emitOne (events.js:96:13) at Readable.emit (events.js:188:7) at PcapSession.<anonymous> (/home/pi/node_modules/node-dash-button/index.js:87:28) at emitOne (events.js:96:13) at PcapSession.emit (events.js:188:7) at PcapSession.on_packet_ready (/home/pi/node_modules/node-dash-button/node_modules/pcap/pcap.js:99:10) at packet_ready (/home/pi/node_modules/node-dash-button/node_modules/pcap/pcap.js:44:14) 

我尝试了一些不同的东西来尝试让玩家没有运气。 引用的index.js文件提到了使用player.running命令,但是当尝试使用这个命令时,我仍然得到播放器closures的错误。

您正在使用比4.x系列早的Node版本。

因此,它看作为一个标识符而不是关键字,所以它并不期望它紧跟着另一个标识符( spawn )。

将节点的安装升级到当前版本。


或者,使用不同的variables声明,如var