RequireJS 优化器无法正确加载外部 facebook js

RequireJS optimizer fails to load external facebook js correctly

我的文件结构如下所示。一切都在 js 文件夹中。

-js  
  --config.js  
  -app  
    --app.fb.js  
    --main.js  
  -lib  
    --jquery-1.9.0.js
    --require.js  
  -tools  
    --r.js  
    --build.js  

我已经根据 https://developers.facebook.com/docs/javascript/howto/requirejs

创建了一个配置文件

config.js

require.config({
  shim: {
    'facebook' : { exports: 'FB' }
  },
  paths: {
      'jquery': '../lib/jquery-1.9.0',  
      'facebook': '//connect.facebook.net/en_US/all'
  }
});

app.fb.js

define(['facebook'], function(){
    console.log("loaded fb");
});

build.js

({
    baseUrl: "../app",
    mainConfigFile: "../config.js",
    name: "main",
    out: "../core.js",
    paths: {
      'facebook': 'empty:'
    }
})

main.js

require(["jquery", "app.fb"], function($, appfb){
    // Log the callback parameter.
    console.log( "$.fn.jquery:", $.fn.jquery );
});

最后我在这里调用优化文件(core.js)

<script type="text/javascript" data-main="js/core" src="js/lib/require-2.1.15.js"></script>

优化器似乎 运行 正确,但当我加载页面时,我希望 Facebook 模块从 CDN 加载。相反,我得到
GET http://example.com/js/facebook.js require-2.1.15.js:1901 未捕获的错误:脚本错误:facebook

我在这上面花了很长时间,但无法找出问题所在! 有什么想法吗?

谢谢

知道了,出于某种原因,这只有在我将 config.js 内容移动到 main.js 时才有效。

这看起来像:

require.config({
  shim: {
    'facebook' : { exports: 'FB' }
  },
  paths: {
       'jquery': '../lib/jquery-1.9.0',  
       'facebook': '//connect.facebook.net/en_US/all'
   }
 });
require(["jquery", "app.fb"], function($, appfb){
    // Log the callback parameter.
     console.log( "$.fn.jquery:", $.fn.jquery );
 });

在build.js中,更改

mainConfigFile: "../app/config.js",

mainConfigFile: "../app/main.js",

r.js 优化器正确运行!