2012-05-21 2 views
1

Мое приложение работает локально с Requirejs в течение некоторого времени без проблем сейчас, но когда я помещаю его на удаленный сервер, я снова запускаю проблемы, связанные с Requirejs.Requirejs + jQuery не удается, но только при обслуживании удаленно

У меня есть сценарий оболочки jQuery, в котором я загружаю фактический jquery и некоторые jQuery-плагины, например. jquery.cookie.

## boot.js 

// Loaded via <script data-main="/boot.js" src="/vendor/requirejs/require.js"></script> 
require({ 
    baseUrl: '/vendor/requirejs/', 
    waitSeconds: 5, 
    paths: { 
    jquery: '/vendor/jquery/dist/jquery', 
    jQuery: '/assets/javascripts/jquery-wrapper', 
    } 
}, [ 
    'jQuery' 
], function($) { 
    ... 
    }); 
}); 

## /assets/javascripts/jquery-wrapper.js 

define([ 
    'order!jquery', 
    'order!/vendor/jquery-cookie/jquery.cookie.js' 
], function($) { 
    // In here I also define some on my own functions on $ 

    return $; 
}); 

Проблема заключается в том, когда я получить доступ к приложению на удаленном сервере, `Jquery» не определено в точке сценарий jquery.cookie оценивается, подразумевающее мне, что он работает, прежде чем была загружена Jquery.

Uncaught ReferenceError: jQuery is not defined jquery.cookie.js:47 
    (anonymous function) jquery.cookie.js:47 

Я, хотя заказ! префикс должен помешать такой ситуации?

Снова это прекрасно работает на месте. Проблема в том, что я удаляю удаленный сервер.

Если это актуально, локально я использую тонкий сервер. Удаленно я также использую Thin, но позади Nginx, хотя Nginx просто проксирует абсолютно все до Thin.

Нет указаний на то, что файлы не найдены в течение 5-секундного таймаута. Ошибка появляется на консоли немедленно.

Может ли кто-нибудь сказать мне, где я ошибся?

Благодаря

+0

'заказать! /vendor/jquery-cookie/jquery.cookie.js' неверно. Выньте «.js». Кроме того, большинство пользователей помещают массив basePath и paths в вызов метода «configure». Здесь может быть гораздо больше ошибок, но я думаю, что эти два выделяются как проблемы. –

ответ

1

Я не вижу ничего плохого в том, как вы загружаете JQuery с помощью плагина заказа, но если он работает локально, а не удаленно, вы можете проверить HTTP заголовок файлов, возвращаемых сервером , и посмотрите, поддерживают ли они кеширование браузера (Cache-Control, Pragma, Expires, ...), потому что плагин заказа работает только в том случае, если файлы javascript можно кэшировать браузером.

Если это не так, может быть, вы можете загрузить JQuery, используя приоритет конфигурации RequireJS, чтобы загрузить JQuery перед другими плагинами, или если вы хотите, вы также можете обернуть plungis в определять функции

define(['JQuery'], function ($) { 
    //Paste plugin code here. 
}); 
+0

Хм, интересно. Я не знал о сильном кэшировании. Это может объяснить некоторые вещи (мы столкнулись с этими проблемами с локальным сервером сегодня, но это был Webrick). Я проверю и вернусь, как только смогу. Спасибо, Габриэль. – Pietro

+1

Ты маленькая красавица @ GabrielJürgens! – Pietro

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