【问题标题】:Requirejs optimiser - module setup fails to skip external sourcesRequirejs 优化器 - 模块设置无法跳过外部源
【发布时间】:2013-11-03 15:42:53
【问题描述】:

我目前正在尝试在 requirejs 优化器配置中创建单独的模块,目前看起来像: 基于模块的设置(无法跳过 facebook 路径):

({
        baseUrl: '../static/js',
        mainConfigFile: '../static/js/main.js',
        dir: '../static/js/deploy',
        paths:{
            requireLib: 'vendor/require/require.min',
            _core: 'minify_modules/_core',
            search: 'minify_modules/_search'
        },

        modules:[
            {
                name: 'main',
                include: ['requireLib', '_core']
            },
            {
                name: 'search',
                include:['search']
            }
        ]
    })

在我的一个 requirejs 模块中,我需要 facebook SDK。当我运行优化器时,优化器无法跳过目录并报告:

错误:JavaException:java.io.FileNotFoundException:/connect.facebook.net/en_US/all.js(没有这样的文件或目录)

最初我使用非模块方法并且只有一个输出文件。当我运行该设置时,它会跳过 Facebook SDK 等外部资源,所以我显然有点困惑,为什么下面的设置会跳过目录,而上面的基于模块的设置不会。

基于非模块的设置(跳过 facebook 路径)

    ({
    baseUrl: '../static/js',
    mainConfigFile: '../static/js/main.js',
    name: 'main',
    out: '../static/js/yb-scripts.min.js',
    paths: {
        requireLib: 'vendor/require/require.min',
        _core: 'minify_modules/_core'
    },
    include: ['requireLib', '_core']
})

在 main.js 配置文件中引用了 Facebook SDK:

facebookSDK: '//connect.facebook.net/en_US/all',

我一直在尝试遵循此处的优化器说明:LINK

【问题讨论】:

    标签: javascript requirejs minify r.js


    【解决方案1】:

    您可以在 paths 属性中指定跳过最小化某个模块,因为它是从外部资源提供的:

    paths: {
      requireLib: 'vendor/require/require.min',
      _core: 'minify_modules/_core',
      facebookSDK: 'empty:'
    },
    

    有关详细信息,请参阅RequireJS docs for empty:

    顺便说一句,我没有意识到单个文件的优化过程实际上会默认跳过外部资源。我通常仍然为所有 JS 库指定empty:,因为我使用带有回退的 CDN,例如jquery: ["http://code.jquery.com/jquery-1.10.1.min", "../bower_components/jquery/jquery.min"]

    【讨论】:

    • 谢谢这让我更进一步。你知道这意味着什么吗:跟踪依赖项:主要错误:nope 在模块树中:_core controllers/search/searchCtrl
    • 您是否检查了该控制器模块的文件路径?鉴于您的单个文件配置和模块配置相同,它不会被跟踪似乎很奇怪。还是您在单个文件配置中省略的search 路径?
    • 文件路径正确。此错误仅在使用多模块方法时出现。 _core 模块包含指向包含此搜索控制器的其他模块的路径。当您在技术上解决了我的问题时,我会将您的答案标记为正确。我只是有这个奇怪的错误:现在没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    相关资源
    最近更新 更多