【问题标题】:how to access config.paths after it is defined in main.js在 main.js 中定义后如何访问 config.paths
【发布时间】:2014-03-30 08:25:58
【问题描述】:

这是我的 main.js

requirejs.config({
    baseUrl: '/js',
    paths: {
        jquery: 'jquery',
        ckeditor: 'ckeditor/ckeditor',
        juiAutocomplete: 'jquery-ui-1.10.4.custom',
        tags: 'bootstrap-tokenfield',
        createPost: 'createPost',
        domReady: 'domReady',
        test: 'dropUpload'
    },
    shim: {
        createPost: {
            deps: ['domReady!']
        }
    },
    deps: ['require'],
    callback: function(require) {
        'use strice';
        var moduleName = location.pathname.replace(/\//g, '-').replace(/^-/, '');
        console.log('moduleName is: ' + moduleName);
        console.log('yes is: ' + require.config);

    }
});

在回调中,我想访问上面 requirejs.config() 中定义的路径。如果可能,该怎么做?

我的目的是查看模块路径是否已定义(存在)。如果是这样,则加载模块脚本。如果未选中,则会在控制台中生成加载错误。

这里是这个控制台命令在 requirejs 中可用的方法。我找不到访问我在 requirejs.config() 中定义的路径的方法。这是正确的方向吗?

for (var i in requirejs) {console.log(i);}

配置 下一个勾选 版本 jsExtRegExp 是浏览器 s 目标网址 未定义 定义 指定的 错误 创建节点 加载 执行 未定义

【问题讨论】:

    标签: javascript requirejs


    【解决方案1】:

    没有公共 API 可以从模块内部获取整个 RequireJS 配置。您可以在配置中包含 config 部分,供模块访问。

    但是,您描述的试图解决的问题不需要您阅读配置。以正常方式调用require 将加载模块。如果无法加载模块,则会在控制台上生成错误。大概您还希望 您的 代码知道加载是否成功。您可以使用errback

    require(['foo'], function (foo) {
        // Whatever you'd like to do with foo on success.
    }, function (err) {
        // Whatever you'd like to do on error.
    });
    

    如果出于某种原因您必须直接读取配置,那么它位于requirejs.s.contexts.<context name>.config,其中<context name> 是RequireJS 上下文的名称。默认上下文名为_,因此其配置为requirejs.s.contexts._.config。但是,这不是公共 API 的一部分,可以随时更改。

    【讨论】:

    • 如果请求的js文件不存在,服务器返回一个HTML格式的404页面,并被require.js以某种方式解释,显示此错误:资源解释为脚本但以MIME类型传输文本/html:“127.0.0.1:3000/user/js/require.js”。 login:8 Uncaught SyntaxError: Unexpected token
    • 我正在尝试这个方法来加载js文件:github.com/cloudchen/requirejs-bundle-examples/blob/master/src/…
    • 如果出现这样的错误,下面的脚本将不会继续执行。那就是问题所在。因此,errback 不起作用。为什么 require.js 将 404 页面解释为脚本?
    • 您在此处报告的内容在我看来像是服务器配置错误。某些服务器被配置为在请求无法解析的 URL 时向用户显示“404 页面”。当您请求的 .js 文件不存在时,您必须将服务器设置为向用户显示此类页面。
    • 但试试这个:google.com.hk/abc.js,如果请求的文件不存在,服务器将始终返回 404 html。是这样吗?
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2013-10-22
    • 2021-07-05
    相关资源
    最近更新 更多