2016-06-06 6 views
0

Dieser Beitrag bezieht sich auf eine frühere question über NodeJS und erfordert ein Modul, das eine Funktion injiziert. Die vorherige Frage bezieht sich jedoch auf Webpack. Ich versuche auch, d3.js und das Modul d3.slider zu integrieren, aber RequireJS zu verwenden.So integrieren Sie die Module Requirejs, d3 und d3.slider

Nach dem Kommentar von Nikos Paraskevopoulos verlassen wird ein Shim benötigt. Ich habe das für das Modul d3.slider benötigte Shim nicht erfolgreich implementiert und hoffte, dass jemand mich in die richtige Richtung führen könnte. Im Moment habe ich

require.config({ 
    paths: { 
     "d3": "https://d3js.org/d3.v3.min", 
     "d3.slider": "lib/d3.slider" 
    }, 
    shim: { 
     "d3.slider": { 
      "deps": ["d3"], 
      "exports": "d3" 
     } 
    } 
}); 
require(['d3'], function(d3) { 
    console.log(d3.version); 
    d3.select("#time_slider").call(d3.slider()); 
}); 

Diese protokolliert:

3.5.17

Typeerror: d3.slider ist keine Funktion

Ich glaube, mein Problem in der Zwischenscheibe ist, aber ich bin mir nicht ganz sicher. Jede Richtung wird geschätzt.

+1

Waren die letzten zwei Zeilen innerhalb einer 'require (['d3.slider'], Funktion (d3) {...})'? –

+0

Entschuldigung, die letzten beiden Zeilen sind erforderlich (['d3'], Funktion (d3) {...}) Ich werde den Beitrag aktualisieren, um das zu reflektieren. Wenn ich Ihren Vorschlag ausprobierte, loggt die Konsole: _undefined_ und _d3.select ist keine Funktion_ – gabalmat

Antwort

0

Wenn ich auf den Quellcode von d3.slider schaue ich sehe es ruft . Sie brauchen also kein shim dafür.

Sie laden es auch nicht. Sie sollten dies tun:

require(['d3', 'd3.slider'], function (d3) { 
    console.log(d3.version); 
    d3.select("#time_slider").call(d3.slider()); 
}); 

In der Quelle sehe ich, dass es sich auf d3 installiert. Sie müssen Ihrer anonymen Funktion also keinen Parameter hinzufügen: Nach dem Laden steht sie auf dem Objekt d3 zur Verfügung.

+0

Ok, ich habe die Unterlegscheibe los und ich lade jetzt d3.slider, aber ich bekomme immer noch die gleiche Ausgabe wie in meinem Beitrag. Ich verstehe, dass d3.slider Funktionen auf dem d3-Objekt verfügbar sein sollten, so verstehe ich nicht, warum ich immer noch den TypeError – gabalmat

+0

bekomme An dieser Stelle würde ich vorschlagen, dass Sie eine [MCVE] erzeugen. – Louis