【问题标题】:log4javascript is undefined when I try to include it using RequireJS当我尝试使用 RequireJS 包含它时,log4javascript 未定义
【发布时间】:2015-01-28 19:24:21
【问题描述】:

当我使用 requirejs (v2.1.13) 包含 log4javascript (v1.4.10) 时,js 变量 log4javascript 未定义,但是正如我在 chrome 网络控制台中看到的那样,log4javascript.js 已成功加载。

这是我的 requirejs 配置:

requirejs.config({
'baseUrl': 'resources/js',
'paths': {
    'angular': 'libs/angularjs/angular',
    'jquery' : 'libs/jquery/jquery-2.1.1.min',
    'bootstrap' : 'libs/bootstrap/bootstrap',
    'log4javascript': 'libs/log4javascript/log4javascript_uncompressed'
},
'shim' : {
    'angular' : {'exports' : 'angular', deps: ['jquery']},
    'jquery': {'exports' : 'jquery'},
    'bootstrap': {'exports' : 'bootstrap', deps: ['jquery']}
}});

Sine 1.4.10 log4javascript 应该支持 AMD,所以我不需要添加 shim。

我不明白我做错了什么。请帮忙!

UPD:1.4.10 版中的 AMD 支持似乎有问题,因为当我在“log4javascript_uncompressed.js”中注释掉以下行并添加 shim 时,一切都变得很好:

/*
if (typeof define == "function" && define.amd) {
    // AMD. Register as an anonymous module.
    define(factory);
} else if (typeof module != "undefined" && typeof exports == "object") {
    // Node/CommonJS style
    module.exports = factory();
} else {
    // No AMD or CommonJS support so we place log4javascript in (probably) the global variable
*/
    root.log4javascript = factory();
//}

【问题讨论】:

    标签: requirejs log4javascript


    【解决方案1】:

    当我使用 requirejs (v2.1.13) 包含 log4javascript (v1.4.10) 时,js 变量 log4javascript 未定义,但是正如我在 chrome 网络控制台中看到的那样,log4javascript.js 已成功加载。

    如果一切正常,这正是会发生的事情。看看你注释掉的代码。当 log4javascript 检测到 AMD 加载程序它不会将名为 log4javascript 的变量泄漏到全局空间中。仅当它既未检测到 AMD 加载程序也未检测到它在 Node 中运行时,它才会泄漏该变量。

    如果使用 log4javascript 的代码都在 AMD 模块中,那么访问 log4javascript 的正确方法是将其作为依赖项包含在 definerequire 调用中。比如require(['foo', 'log4javascript'], function (foo, log4javascript) {...});

    如果您必须使用期望log4javascript 变量存在于全局空间中的代码,您可以通过故意泄漏变量来解决它。详情请见this answer

    【讨论】:

    • 非常感谢,路易斯!你绝对是对的。傻我requirejs初学者!
    猜你喜欢
    • 2013-02-07
    • 2023-03-15
    • 2022-07-02
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多