2013-03-30 21 views
6

Quindi, sono nuovo di Require.js e sto imparando questa libreria caricando varie altre librerie utilizzando i metodi Require.js.Caricamento jwplayer.js utilizzando Require.js

Ho caricato con successo oggetti Knockout.js, oggetto Chart.js e oggetti definiti da Require.js personalizzati.

Ma non riesco a caricare jwplayer utilizzando Require.js. Questo è il metodo di errore che ho ricevuto: Uncaught TypeError: Impossibile chiamare il metodo 'jwplayer' di indefinito

Questo è il mio codice di esempio (il Knockout, oggetti del grafico tutto caricato con successo)

require(['jwplayer/jwplayer', 'libs/Chart', 'libs/knockout-2.1.0', 'appViewModel','helper/util'], function(jwplayer, chart, ko, appViewModel, util) { 

//LOADING FROM jwplayer.js 
jwplayer("player").setup({ 
    width: '320', 
    height: '40', 
    sources: [{ 
     file: "rtmp://127.0.0.1:1935/vod/mp3:sample_1.mp3" 
    },{ 
     file: "http://127.0.0.1:1935/vod/sample_1.mp3/playlist.m3u8" 
    }] 
}); 

//LOADING FROM Chart.js 
var barChartData = { 
    labels : ["January","February","March","April","May","June","July"], 
    datasets : [ 
     { 
      fillColor : "rgba(220,220,220,0.5)", 
      strokeColor : "rgba(220,220,220,1)", 
      data : [65,59,90,81,56,55,40] 
     }, 
     { 
      fillColor : "rgba(151,187,205,0.5)", 
      strokeColor : "rgba(151,187,205,1)", 
      data : [28,48,40,19,96,27,100] 
     } 
    ] 
}; 
var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Bar(barChartData); 

//LOADING FROM knockout-2.1.0.js 
ko.applyBindings(new appViewModel()); 

//LOADING FROM A CUSTOM DEFINED OBJECT 
util.greets(); 
    }); 

Così come carichi jwplayer.js usando Require.js?

risposta

8

jwplayer.js non definisce un modulo per require.js, quindi si sta andando ad avere per usare il shim config, qualcosa di simile:

require.config({ 
    shim: { 
     'jwplayer/jwplayer': { 
      exports: 'jwplayer' 
     } 
    } 
}); 

Si può vedere di più su come usarlo nei doc di requisitijs api.

Modifica: digitare nel codice di esempio.

Modifica 2: va notato che jwplayer() restituirà null se non riesce a trovare il lettore che lo passi, quindi, anche se è caricato correttamente, continuerà a generare quell'errore. Se stai ricevendo l'errore anche dopo aver compreso la configurazione, prova ad aggiungere qualcosa di simile

console.log(jwplayer.api); 

nella richiamata richiedere e controllare la console per vedere se c'è qualcosa lì.

+0

grazie, la configurazione dello shim funziona perfettamente! :) –

+0

Molto bello, votato! :) – emaxsaun

Problemi correlati