丑陋的定义没有定义

Uglified define not defining

本文关键字:定义      更新时间:2023-09-26

我使用r.js来丑化和连接我的js文件。一些函数出现在修改后的文件中,如(NB)。这是为了可读性而美化的):

!function(root, factory) {
if ("object" == typeof exports) {
    {
        var backbone = require("backbone");
        require("marionette");
    }
    dust = require("dust");
    module.exports = factory(backbone, dust);
} else if ("function" == typeof define && define.amd) {
    define("marionette-dust", [ "backbone", "dust", "marionette" ], factory);
    console.log(requirejs.s.contexts._.config);
}
}(this, function(Backbone, dust) {
    alert("in");
    Backbone.Marionette.Renderer.render = function(template, data) {
        console.log("BBD: ", arguments);
        var html;
        console.log("dust: ", dust);
        dust.render(template, data, function(err, out) {
            console.log("out", out);
            html = out;
        });
        return html;
    };
    console.log("Backbone", Backbone);
});

如果我加载页面,然后测试:

require.defined("marionette-dust")

则返回时为未加载。如果我把断点放进去,那么基本上它会进入amd部分(else-if块),并且定义是存在的,但它没有定义,工厂部分永远不会执行…

要清楚:第一个控制台日志显示requires对象(没有加载模块);其他的都不会被执行,因为它们在工厂函数中…我已经在这里工作了几个小时了,我认为这与在r.js中转换包装器有关。require.defined是我在测试模块是否已定义后输入自己的东西-它返回false…

Repo可在:https://github.com/jmsherry/birds2如果你想更仔细地看

终于修复了。在你的需求配置文件(正如它在文档中所说,我在上面的回复中提到)只把shim引用到其他shim模块。

我从路径中调用我的脚本,但是因为它有依赖,我把它们放在shim中,这就是它崩溃的地方。

TL:博士;使用path条目调用主脚本,然后在主脚本中列出定义包装器的deps部分中的深度…