ReferenceError:未定义音频

我正在为客户在Meteor中构建一个音频播放器。

我尝试创建音频对象时收到错误。 我正在使用以下代码。 知道为什么会这样吗? 任何帮助将不胜感激。

// Define Audio song = new Audio('/audio/waitforme.mp3'); // Define Play play = $('#playicon'); $(function() { $('#playicon').on("click", function() { e.preventDefault(); song.play(); }) }); ReferenceError: Audio is not defined at AlannaSite.js:2:14 at AlannaSite.js:12:4 at /Users/CorrinSite/.meteor/local/build/programs/server/boot.js:242:10 at Array.forEach (native) at Function._.each._.forEach (/Users/AriKamin/.meteor/packages/meteor- tool/.1.1.9.1sd3e7j++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11) at /Users/CorrinSite/.meteor/local/build/programs/server/boot.js:137:5 

我认为这里有一种误解。 您拥有正确的代码,但它在不同的上下文中运行。

对于Meteor,NodeJS后端也在运行“客户端”代码。 遗憾的是,NodeJS不支持您正在使用的音频API,但您的浏览器却支持。

这个在客户端和服务器端运行和运行的代码可能会让客户端+服务器之间的界限变得有点混乱,尤其是当Meteor试图模糊这些行时!

我会查看Meteor的架构,以便您可以最好地构建代码,以“客户端”与“后端”环境为目标。 这里有一篇很棒的文章: https : //www.discovermeteor.com/blog/what-goes-where/

基本上,Meteor提供了两个可用于专门定位客户端或服务器的目录。 您可以将文件放在/client/server ,它将为您处理。

对于快速或两个上下文中使用的文件,Meteor文档解释了一个名为Meteor.isClientMeteor.isServer的布尔标志,您可以使用它来标记仅在客户端/服务器端运行的代码: http://docs.meteor.com/#/basic/Meteor-isClient