requirejs - 如何在定义期间从下一个模块访问 amd 模块
问题描述
我有这个工作代码。
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 配置 :-(
解决方案
你的代码现在在做什么:
- 您定义了一个具有两个依赖项的模块,
axios
并且r
, - requirejs 开始异步下载两个文件
r
是常规脚本(不是 amd 模块)并且没有 axios 作为依赖项- 如果
r
先加载,那么你有axios
未定义 - 如果
axios
首先加载,它将自己注册为 amd 模块,并且它不可见为全局,所以你有 undefined
您的问题的第一个解决方案是重写r
为 amd 模块并指定axios
为其依赖项。
第二种解决方案axios
是r
通过shim
.
推荐阅读
- spring - Spring Boot LDAP在ODM中获取memberOf
- c - 从与 c 中的结构相关的已定义函数中打印错误的数字
- python - 如何将轮询代码添加到 django-cms url.py 文件?
- flutter - 颤振后退按钮 Navigator.pop 不起作用
- c# - 范围外的内联变量声明
- jmeter - JMeter如果控制器jexl3
- android - RecyclerVIew onCreateViewHolder 和 onBindViewHolder 没有被调用
- android - 全部选中后,Apple 应用商店显示应用在国家/地区不可用
- python - Convert csv into Json using python
- listview - 如何在 xamarin 表单中使用滑动删除功能创建列表视图