2015-01-16 2 views
0

Моя файловая структура выглядит так. Все находится в папке js.Оптимизатор RequireJS не может правильно загрузить внешнюю facebook 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 требуют-2.1.15.js: 1901 Uncaught Ошибка: Ошибка сценария для: facebook

Я провел возрастов на этом и не могу понять эту проблему! Любые мысли?

Благодаря

ответ

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 Оптимизатор нормально работает!

+0

Аналогичная заметка здесь о важности 'mainConfigFile' ... http://stackoverflow.com/questions/16233372/requirejs-optimization-undefined-is-not-a-function – doublejosh

Смежные вопросы