未捕获错误:按 require.js 加载非 AMD 脚本时没有定义调用
Uncaught Error: No define call for when loading non AMD script by require.js
我有一个非AMD javascript,其中包含我的自定义函数,例如:
function getItemIndexById(items, id){
for(var i = 0; i < items.length; i++){
if(items[i].ID == id) return i;
}
return false;
}
//more than one define custom function here.
这里主.js文件:
requirejs.config({
enforceDefine: true,
paths: {
"jquery": "libs/jquery/jquery-min",
"underscore": "libs/underscore/underscore-min",
"backbone": "libs/backbone/backbone-min",
"custom" : "libs/scripts/customejs"
},
shim: {
"underscore": {
deps: [],
exports: "_"
},
"backbone": {
deps: ["jquery", "underscore"],
exports: "Backbone"
}
}
});
然后我在我的观点中定义:
define(["jquery" ,
"underscore" ,
"backbone" ,
"custom"
],function($ , _ , Backbone, Custom){
//.....
}
我在Uncaught Error: No define call for custom
中遇到错误.
我必须将我的自定义 js 转换为 AMD 吗?谁能解释一下这个问题。谢谢。
此问题的常见原因在"需要"文档中进行了说明。
在这种情况下,很可能是因为您使用的是enforceDefine: true
并且"自定义"js文件不调用define()
。
您需要为自定义代码设置enforceDefine: false
或添加适当的填充程序。
填充程序的目的是允许"需要"加载非 AMD 代码。它的工作原理是加载代码并验证脚本是否在全局空间中创建了属性(如 exports
属性所定义)。
在您的情况下,您可以使用 getItemIndexById
作为exports
值:
shim: {
"custom": {
exports: "getItemIndexById"
}
当您使用 Custom
作为exports
值时,它不起作用,因为您的脚本没有创建名为 Custom
的变量
在此处阅读有关shim
的更多信息
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- Amd,希望确保某个东西总是最后执行
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 当脚本由system.js加载时,如何要求('electron')
- HTML标记在脚本标记中工作
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- AMD 加载的脚本在镶边中不可见
- 未捕获错误:按 require.js 加载非 AMD 脚本时没有定义调用
- RequireJS :处理与填充程序和非AMD加载脚本的jQuery冲突
- 哪些脚本加载程序(AMD或非AMD)用于Backbone.jsUnderscore
- Wrapper允许模块使用AMD/CommonJs或脚本标记