2012-03-05 1 views
9

Ho impostato il data-main per Requirejs e in base alla documentazione che dovrebbe impostare la baseUrl per tutti i miei file di script. Ma questo non è il caso. La mia struttura di cartelle è questo:Requirejs data-main non sta impostando la baseUrl

Home/Index.html 
Content/scripts/main.js 
Content/scripts/libs/require/require.js 
Content/scripts/libs/jquery/require_jquery.js 
Content/scripts/libs/jquery/jquery-1.7.1.mins.js 

Ecco il tag script nella mia Index.HTML:

<script data-main="/PAWS/Content/scripts/main.js" src="/PAWS/Content/scripts/libs/require/require.js" type="text/javascript"></script> 

vorrei assumere che sarebbe impostare il mio baseurl a/PAWS/Content/scripts/ma non funziona per me. Nei miei main.js faccio questo:

require(
    { paths: 
     { jquery: 'libs/jquery', 
      knockout: 'libs/knockout' 
     } 
    }, 

    ['jquery/require_jquery'], 


    function ($) { .... } 
); 

Nei miei require_jquery.js lima faccio questo:

define(["libs/jquery/jquery-1.7.1.min.js"], function() { 
    return jQuery; 
}); 

Ma ottengo un errore 404 dicendo che:

GET http://localhost/PAWS/Home/libs/jquery/jquery-1.7.1.min.js 404 NOT FOUND 

Vedete .. il mio baseUrl dovrebbe essere/PAWS/Content/scripts ... Ma ignora totalmente la mia impostazione di attributo data-main e solo risolve/PAW S/Home/per essere la baseUrl. Che cosa sto facendo di sbagliato?

risposta

10

Dal RequireJS API docs:

Tuttavia, se il nome di dipendenza ha una delle seguenti proprietà, viene trattato come un normale file percorso, come qualcosa che è stato passato a un tag <script src="">:

  • Termina in ".js".
  • Inizia con "/".
  • Contiene un protocollo URL, come "http:" o "https:".

Da questo, sembra che il vostro "js" esplicite sulla fine della libs/jquery/jquery-1.7.1.min.js è confondere il tuo percorso re: baseurl. Prova invece a libs/jquery/jquery-1.7.1.min.

+0

Signore, sei un genio. Grazie mille. –