"Module loading did not complete" requirejs 中没有循环依赖
"Module loading did not complete" without circular deps in requirejs
[edit] 我将问题缩小到库 three.js。该应用程序确实有效,但不起作用的是 r.js 优化器,当我在我的 require 过程中删除对 three.js 的所有引用时,然后 r.js 进行编译(但应用程序不是继续工作了)
我只是简单地评论了那些我将 lib 引用为 dep 的垫片。这些库仍然是必需的,所以它们不是问题。是 render/three
有问题。但是我现在不明白为什么
"render/OrbitControls": ["render/three"],
"render/TrackballControls": ["render/three"],
"render/Detector": ["render/three"],
"render/stats.min": ["render/three"],
"render/threex.rendererstats": ["render/three"],
"render/ColladaLoader": ["render/three"],
"render/Projector": ["render/three"],
[原创]
我在我的 requirejs 项目中手动和 Madge 检查了循环 deps。
然而,即使采取了这些预防措施,r.js 仍然告诉我它无法完成模块加载。我有点卡在这里
这是控制台中发生的事情的屏幕。
这是我在 grunt
中的 r.js 配置
requirejs: {
compile: {
options: {
name: "engine",
baseUrl: "./src/GuildEngine/",
mainConfigFile: "./src/GuildEngine/engine.js",
out: "./build/www/data/curry.min.js",
optimize: "uglify2",
preserveLicenseComments: false,
generateSourceMaps: true,
findNestedDependencies: true,
uglify2: {
sourceRoot: "../../src/GuildEngine",
mangle: {
toplevel: true,
screw_ie8: true
},
wrap: "",
compress: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
//drop_console: true
}
}
}
}
}
通过在 shim 配置中有效删除对 three.js 的依赖关系解决了该问题。有效的是添加一个 require 调用来包装其他库的 require 调用。这是我发现 r.js 和我的应用程序都能正常工作的唯一方法。
这个:
require(["render/three"], function(){
require(["render/ColladaLoader"], function(){ ... });
});
而不是:
"render/ColladaLoader": ["render/three"]
和:require(["render/ColladaLoader"], function(){ ... });
[edit] 我将问题缩小到库 three.js。该应用程序确实有效,但不起作用的是 r.js 优化器,当我在我的 require 过程中删除对 three.js 的所有引用时,然后 r.js 进行编译(但应用程序不是继续工作了)
我只是简单地评论了那些我将 lib 引用为 dep 的垫片。这些库仍然是必需的,所以它们不是问题。是 render/three
有问题。但是我现在不明白为什么
"render/OrbitControls": ["render/three"],
"render/TrackballControls": ["render/three"],
"render/Detector": ["render/three"],
"render/stats.min": ["render/three"],
"render/threex.rendererstats": ["render/three"],
"render/ColladaLoader": ["render/three"],
"render/Projector": ["render/three"],
[原创] 我在我的 requirejs 项目中手动和 Madge 检查了循环 deps。
然而,即使采取了这些预防措施,r.js 仍然告诉我它无法完成模块加载。我有点卡在这里
这是控制台中发生的事情的屏幕。
这是我在 grunt
中的 r.js 配置 requirejs: {
compile: {
options: {
name: "engine",
baseUrl: "./src/GuildEngine/",
mainConfigFile: "./src/GuildEngine/engine.js",
out: "./build/www/data/curry.min.js",
optimize: "uglify2",
preserveLicenseComments: false,
generateSourceMaps: true,
findNestedDependencies: true,
uglify2: {
sourceRoot: "../../src/GuildEngine",
mangle: {
toplevel: true,
screw_ie8: true
},
wrap: "",
compress: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
//drop_console: true
}
}
}
}
}
通过在 shim 配置中有效删除对 three.js 的依赖关系解决了该问题。有效的是添加一个 require 调用来包装其他库的 require 调用。这是我发现 r.js 和我的应用程序都能正常工作的唯一方法。
这个:
require(["render/three"], function(){
require(["render/ColladaLoader"], function(){ ... });
});
而不是:
"render/ColladaLoader": ["render/three"]
和:require(["render/ColladaLoader"], function(){ ... });