Как получить доступ к модулю amd из следующего модуля во время определения - PullRequest
0 голосов
/ 14 октября 2019

У меня есть этот рабочий код.

define(['https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.min.js'],function(axios) { 
    axios.post('/user');
});

Но я хочу использовать axios внутри следующего модуля r.js

define([
    'https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.min.js',
    'https://example.com/r.js], function(axios) { 
    return r; 
}); 

Но axios не определен.

r.js

var r = function () {
  console.log('worked') // worked
  axios.post('/user'); // axios undefined
}

Возможно ли это? У меня нет доступа к конфигу requre.js: - (

1 Ответ

1 голос
/ 14 октября 2019

Что ваш код делает сейчас:

  • вы определяете модуль с двумя зависимостями: axios и r,
  • requirejs начинает загрузку обоих файлов async
  • r - это обычный скрипт (не модуль amd), в котором в качестве зависимости не указано axios
  • , если сначала загружается r, тогда у вас есть axios undefined
  • if axios загружается сначала, он регистрируется как модуль amd и не отображается как глобальный, поэтому у вас есть неопределенное

Первое решение вашей проблемы - переписать r как модуль amd и указать axiosкак его зависимость.

Второе решение - указать axios как зависимость r через shim.

...