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){});
Другие вопросы по тегам