【问题标题】:"Module loading did not complete" without circular deps in requirejs“模块加载未完成”在requirejs中没有循环依赖
【发布时间】:2015-04-25 08:04:18
【问题描述】:

[编辑] 我将问题缩小到 lib 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
                        }
                    }
                }
            }
        }

【问题讨论】:

    标签: gruntjs requirejs r.js


    【解决方案1】:

    通过在 shim 配置中有效删除对 three.js 的依赖关系解决了该问题。有效的方法是添加一个包含其他库的 require 调用的 require 调用。这是我发现 r.js 和我的应用程序都可以工作的唯一方法。

    这个: require(["render/three"], function(){ require(["render/ColladaLoader"], function(){ ... }); });

    而不是: "render/ColladaLoader": ["render/three"] 和:require(["render/ColladaLoader"], function(){ ... });

    【讨论】:

      猜你喜欢
      • 2017-10-27
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多