ReferenceError:未定义音频

时间:2016-01-13 03:22:11

标签: jquery html5 audio meteor

我正在为客户在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

3 个答案:

答案 0 :(得分:5)

我认为这里存在误解。您拥有正确的代码,但它在不同的环境中运行。

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

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

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

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

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

答案 1 :(得分:1)

这将在服务器端编译:

    if(typeof Audio != "undefined") {
      // Browser-only code
    }

答案 2 :(得分:1)

在带有钩子的 ReactJS 中,您还可以使用 Audio(HTMLElements) 的表达式:

if (TryConvert(DateInterval.Off, out TimeInterval timeInterval))
{
    // Do something with your time interval
}

希望我能帮上忙:)