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

时间:2015-01-16 15:32:43

标签: facebook facebook-graph-api requirejs

我的文件结构如下所示。一切都在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

我已经花了很长时间在这上面并且无法解决问题! 有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

知道了,出于某种原因,这只有在我将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优化器正确运行!