我注意到一个奇怪的行为与RequireJS试图将单模值直接赋值给一个变量,像这样的:RequireJS:需要一个模块返回一个函数,而不是一个对象
App.tables = require(['appTables']);
这样做的结果调用是App.tables包含这样的功能:
localRequire(deps, callback, errback)
,而我的appTables.js看起来是这样的:
define({
users: {
name: 'tables.users',
data: {
name: {
visible: true,
hide: false,
display: 'Name'
},
surname: {
visible: true,
hide: false,
display: 'Surname'
}
}
}
});
事实上,试图将其分配中的经典方式运行:
require(['appTables'], function(appTables) {
App.tables = appTables;
});
那么,什么是错我的第一种方法?为什么它会返回一个函数而不是对象?谢谢!
你应该通过该模块的名称为'require',而不是一个数组。所以:'App.tables = require('appTables');'应该按预期工作。 –
感谢您的回复,但它给了我以下错误:“错误:模块名称”appTables“尚未加载上下文:_。使用require([])” – Ingro
您需要将'require'包装在当您使用简化的CommonJS语法时,可以使用'define'块。所以:'define(function(require){App.tables = require('appTables'); ...});'应该工作。请参阅:http://requirejs.org/docs/api.html#cjsmodule –