Gruntjs &引用;“模块加载未完成”;在requirejs中没有循环DEP

Gruntjs &引用;“模块加载未完成”;在requirejs中没有循环DEP,gruntjs,requirejs,r.js,Gruntjs,Requirejs,R.js,[编辑]我将问题缩小到lib three.js。应用程序确实可以运行,但r.js优化器不起作用,当我在require流程中删除对three.js的所有引用时,r.js会进行编译(但随后应用程序就不再运行了) 我只是在引用lib作为dep的地方对这些垫片进行注释。这些lib仍然是必需的,因此它们不是问题所在。有问题的是渲染/three。但是我现在不明白为什么 "render/OrbitControls": ["render/three"], "render/TrackballCont

[编辑]我将问题缩小到lib three.js。应用程序确实可以运行,但r.js优化器不起作用,当我在require流程中删除对three.js的所有引用时,r.js会进行编译(但随后应用程序就不再运行了)

我只是在引用lib作为dep的地方对这些垫片进行注释。这些lib仍然是必需的,因此它们不是问题所在。有问题的是
渲染/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双重检查了循环DEP

然而,即使采取了这些预防措施,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”]
和:
需要([“render/ColladaLoader”],function(){…})