2016-01-13 3 views
0

Я создаю аудиоплеер в Meteor для клиента.ReferenceError: звук не определен

У меня возникает ошибка, когда я пытаюсь создать аудио-объект. Я использую следующий код. Любая идея, почему это происходит? Любая помощь будет принята с благодарностью.

// 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 
+0

Фактически он был первоначально установлен как Audio() not audio(), и эта ошибка все еще была там. – 91Kamin

+0

Затем отредактируйте свой вопрос с правильным сообщением об ошибке и соответствующим кодом. Как бы то ни было, единственный ответ таков. – Kaiido

+0

хорошо, изменил его. Получите ту же ошибку с Audio вместо «audio». – 91Kamin

ответ

3

Я думаю, что здесь есть неправильное представление. У вас есть правильный код, но он работает в другом контексте.

В случае с Метеорным коннектором NodeJS также выполняется код «клиентской стороны». У NodeJS нет поддержки API-интерфейса Audio, который вы используете, к сожалению, но ваш браузер.

Этот код, обслуживающий и работающий как на стороне клиента, так и на стороне сервера, может немного запутать, чтобы знать линии между клиентом + сервером, особенно когда Meteor пытается размыть эти строки!

Я бы посмотрел архитектуру Метеор, чтобы вы могли лучше структурировать свой код, чтобы ориентировать среды «клиент-конец» и «задние». Отличная статья здесь: https://www.discovermeteor.com/blog/what-goes-where/

В принципе, Meteor предоставляет два каталога, которые вы можете использовать для конкретной цели для клиента или сервера. Вы можете разместить файлы в /client или /server, и он будет обработан для вас.

что-то быстро или для файла, который используется в обеих контекстах документы Метеора объясняет булев флаг под названием Meteor.isClient или Meteor.isServer, который можно использовать для обозначения кода должны работать только на стороне клиента/на стороне сервера: http://docs.meteor.com/#/basic/Meteor-isClient

+0

Прохладный. Я не знал, что Meteor.isClient/isServer необходим для всех функций (в основном используется только с помощниками и pub/sub раньше). Будет определенно отказаться от этого, а затем закрыть вопрос, если он работает. – 91Kamin

+1

Yup, удалите ошибку. Благодаря! – 91Kamin

Смежные вопросы