2013-11-03 39 views
1

目前,我想要创建requirejs优化器配置目前看起来像内的分离的模块: 模块基于设置(未跳过的Facebook路径):Requirejs优化器 - 模块设置失败跳过外部源

({ 
     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。当我运行优化器优化器无法忽略目录和报告:

Error: JavaException: java.io.FileNotFoundException: /connect.facebook.net/en_US/all.js (No such file or directory)

我原来使用的非模块方法,有一个单一的输出文件。当我运行该设置时,它会跳过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'] 
}) 

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

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

我一直在试图跟随优化器在这里注意:LINK

回答

2

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

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

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

在附注上,我没有意识到单个文件的优化过程默认会实际跳过外部资源。由于我使用CDN和后备文件(如jquery: ["http://code.jquery.com/jquery-1.10.1.min", "../bower_components/jquery/jquery.min"]),所以我通常仍然为所有JS库指定empty:

+0

感谢这让我更进一步。你知道这意味着什么:主要 错误: 追查的依赖没了 在模块树: _Core 控制器/搜索/ searchCtrl – Malcr001

+0

你检查控制器模块的文件路径?看起来很奇怪,因为你的单个文件配置和模块配置是相同的,所以它不会被跟踪。或者它是在单个文件配置中省略的“搜索”路径? –

+0

文件路径是正确的。只有在使用多模块方法时才会显示此错误。 _core模块包含包含此搜索控制器的其他模块的路径。我会标记你的答案是正确的,因为你在技术上解决了我的问题。我只是有这个奇怪的错误:现在没有问题。 – Malcr001

相关问题