Uncaught ReferenceError: RSVP не определен, ошибка при использовании require.js с rsvp
Я работаю над демонстрацией, показывающей обработку ошибок в обещаниях с использованием rsvp.js. Все было хорошо, пока я не использовал URL-адрес CDN для rsvp.js в теге. Теперь, так как у меня есть файл require.js для загрузки модуля в моем приложении, я попытался загрузить модуль rsvp.js с помощью синтаксиса require js. На вкладке сети Chrome я вижу, что модуль rsvp.js также загружается правильно, но я получаю следующую ошибку в консоли:
Uncaught ReferenceError: RSVP не определен.
require(["bootstrap","js/rsvp"], function(bootstrap,rsvp) {
$(document).ready(function () {
function getEmployeeDetails() {
var radioValue1 = $("input[name='option1']:checked").val();
var requrl;
if (radioValue1 == "fail") {
requrl = "../../../testservice/getEmployeeIdss";
} else {
requrl = "../../../testservice/getEmployeeId";
}
return new RSVP.Promise(function (resolve, reject) {
$.ajax({
url: requrl,
success: function (response) {
try {
$('#successBoard').append("<b> <i> Ajax Call 1 Succeeded! </i> </b><br/>" + "Employee ID:" + response.stuId + "<br/>");
resolve(response.stuId);
} catch (e) {
reject(e);
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log('Ajax 1 failed : Rejecting Promise 1');
$('#errorBoard').append("<b> <i> Ajax 1 failed : Rejecting Promise 1</i> </b><br/>");
reject(thrownError);
}
});
});
}
2 ответа
Я взглянул на исходный код RSVP и нашел этот код:
/* global define:true module:true window: true */
if (typeof define === 'function' && define['amd']) {
define(function() { return RSVP; });
} else if (typeof module !== 'undefined' && module['exports']) {
module['exports'] = RSVP;
} else if (typeof platform !== 'undefined') {
platform['RSVP'] = RSVP;
}
Первый if
где RSVP обнаруживает, что он работает в среде AMD, и регистрируется как модуль AMD. Так что у вас не будет глобального RSVP
,
Теперь в вашем коде вам требуется RSVP и привязать его к rsvp
переменная, все строчные. Так что это доступно как rsvp
не RSVP
, Либо относиться к нему как rsvp
или измените имя переменной в функции, которую вы передаете require
так что это RSVP
:
require(["bootstrap", "js/rsvp"], function (bootstrap, RSVP) {
Обратите внимание, что нет смысла ссылаться на Bootstrap, потому что он устанавливается как плагин jQuery, так что вы можете сделать следующее:
require(["js/rsvp", "bootstrap"], function (RSVP) {
Вы не определили RSVP
, вы включили rsvp libraray, но установили его в переменную rsvp
и не RSVP
поэтому, когда вы звоните RSVP.Promise()
это выдает ошибку.
Основное использование через - https://github.com/tildeio/rsvp.js/-
var RSVP = require('rsvp');
var promise = new RSVP.Promise(function(resolve, reject){});