【发布时间】:2014-08-20 08:22:10
【问题描述】:
我正在尝试使用 requirejs:production 任务构建我的 Grunt/RequireJS 应用程序,我得到以下输出:
Running "requirejs:production" (requirejs) task
>> Tracing dependencies for: ../bower_components/almond/almond
>> RangeError: Maximum call stack size exceeded
>> In module tree:
>> main
>> models/session
>> views/root
>> navigation
>> permissions
>> text
{ [Error: RangeError: Maximum call stack size exceeded
In module tree:
main
models/session
views/root
navigation
permissions
text
]
originalError:
{ [RangeError: Maximum call stack size exceeded]
moduleTree:
[ 'text',
'permissions',
'navigation',
'views/root',
'models/session',
'main' ],
fileName: '/Users/zensavona/softwaredev/projects/haze/t3-web/web-admin/src/main/bower_components/text/text.js' } }
我认为它正在谈论的代码是:
define(["backbone", "models/permissions", "text!/ducks/api/Permissions/Current"],
function(Backbone, Permissions, permissionJSON) {
if (permissionJSON.indexOf("<center><h2>Login</h2></center>") > -1) {
return new Permissions();
} else {
var data = JSON.parse(permissionJSON);
return new Permissions(data);
}
});
我的第一直觉是某种循环依赖(?),但我看不到。这与我的代码或text 模块有关吗?
【问题讨论】:
-
您是否尝试在您的r.js config 中设置
inlineText:false?您的错误看起来与尝试在构建时读取运行时信息一致。但是,您的问题和解决方案/解决方法表明存在架构问题以及混合抽象和关注点。这只是乞求使用 JS 承诺,很可能会稍微改变你的逻辑。 -
@kryger 我遇到了同样的问题,并用您的解决方案解决了它。谢谢!
标签: javascript backbone.js requirejs gruntjs bower