如何在定义期间从下一个模块访问 amd 模块
How get access to amd module from next module during define
我有这个工作代码。
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 配置 :-(
您的代码现在正在做什么:
- 你定义了一个有两个依赖的模块,
axios
和r
,
- requirejs 开始异步下载两个文件
r
是常规脚本(不是 amd 模块)并且没有 axios 作为依赖项
- 如果
r
先加载,那么你有 axios
未定义
- 如果
axios
首先加载它会将自己注册为 amd 模块并且它作为全局不可见,所以你有 undefined
您问题的第一个解决方案是将 r
重写为 amd 模块并指定 axios
作为其依赖项。
第二种解决方案是通过 shim
.
将 axios
指定为 r
的依赖项
我有这个工作代码。
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 配置 :-(
您的代码现在正在做什么:
- 你定义了一个有两个依赖的模块,
axios
和r
, - requirejs 开始异步下载两个文件
r
是常规脚本(不是 amd 模块)并且没有 axios 作为依赖项- 如果
r
先加载,那么你有axios
未定义 - 如果
axios
首先加载它会将自己注册为 amd 模块并且它作为全局不可见,所以你有 undefined
您问题的第一个解决方案是将 r
重写为 amd 模块并指定 axios
作为其依赖项。
第二种解决方案是通过 shim
.
axios
指定为 r
的依赖项