【问题标题】:How get access to amd module from next module during define如何在定义期间从下一个模块访问 amd 模块
【发布时间】:2019-10-14 00:12:19
【问题描述】:

我有这个工作代码。

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

但我想在下一个模块 r.js 中使用 axios

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 配置 :-(

【问题讨论】:

    标签: requirejs amd js-amd


    【解决方案1】:

    你的代码现在在做什么:

    • 您定义了一个具有两个依赖项的模块,axiosr
    • requirejs 开始异步下载两个文件
    • r是正则脚本(不是amd模块),没有axios作为依赖
    • 如果r先加载,那么axios未定义
    • 如果axios首先加载,它会将自己注册为amd模块并且它不可见为全局,所以你有未定义

    您的问题的第一个解决方案是将r 重写为amd 模块并将axios 指定为其依赖项。

    第二种解决方案是通过shim指定axios作为r的依赖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      相关资源
      最近更新 更多