2017-05-25 1 views
-1

Hallo ich bin neu hier und hoffe, dass ich mich klar machen kann. Ich habe versucht, (?) JQuery in node.js aufzurufen, aber alles, was ich mache, führt zu einem Fehler. Ich habe versucht, dies für Stunden zu lösen und immer noch hoffnungsvoll dort ist jemand, der mir dabei helfen kann!Mit jQuery in Node.js

Ich versuche, einige Informationen aus Twitch mit ihrer API zu holen. In diesem Fall, wenn ein Streamer online oder offline ist. Wenn ich die Seite localy (ohne node.js) öffne, funktioniert der jQuery-Code einwandfrei. Wenn ich versuche, node.js zu verwenden, gibt es jedoch Fehler: $. Diese

ist nach einigen Forschung und zufällige versuchen .. (noch neu in node.js und jQuery):

` http://imgur.com/a/2nhho

`

Edit: Der Grund, warum ich versuche zu Verwenden Sie node.js, um meine Website zu aktualisieren, ohne sie zu aktualisieren. Wenn jemand online/offline geht, sollte er/sie nicht gezwungen werden, sich zu aktualisieren.

+0

Welche Version von JSDOM haben Sie installiert? – Li357

+0

Bitte, bette das Bild mit dir ein. Externe Links sind schlecht, denn sobald die externe Ressource weg ist, wird die Frage weniger wertvoll. –

+0

Da ich neu hier bin, gibt es eine Beschränkung auf Bilder. Ich werde die Frage später aktualisieren, wenn ich 10 Reputation bekomme. jsdom Version: "_From": "jsdom @ neueste", "_id": "[email protected]", "_inCache": true, "_Ort": "/ jsdom", "_nodeVersion" : "7.5.0", – Smil3

Antwort

1

"Wenn das einzige Werkzeug, das Sie haben, ein Hammer ist, sieht jedes Problem wie ein Nagel aus."

In diesem Fall versuchen Sie, das falsche Tool für den Job zu verwenden. jQuery wurde speziell für den Einsatz in einer Browserumgebung entwickelt und optimiert. Während du es mit einem Schatten-DOM zum Arbeiten zwingen kannst, tu es nicht.

Wenn Sie die Selektoren und DOM-Manipulationsfunktionen von jQuery verwenden möchten, implementiert cheerio diese API grundsätzlich, jedoch speziell für Node.js/serverseitig.

aber Sie klingen wie Sie es ajax() Methode (oder einer seiner Helfer wie post() oder get().

Stattdessen verwenden möchten, sollten Sie etwas für Knoten gebaut verwenden. node-fetch (https://www.npmjs.com/package/node-fetch) ist eine ausgezeichnete und leicht verwenden Option, die hier entwickelt wurde, ist ein einfaches Beispiel aus seiner Dokumentation speziell für Node.js.

:

fetch('https://github.com/') 
.then(function(res) { 
    return res.text(); 
}).then(function(body) { 
    console.log(body); 
}); 

Sie rufen zuerst fetch() mit der gewünschten URL an. Es wird ein Promise mit einem Response Objekt zurückgegeben. Von diesem können Sie die text() oder irgendetwas anderes extrahieren, und von dort können Sie es analysieren.

Wenn Sie Optionen übergeben müssen, rufen Sie eine andere Methode (wie POST), etc., geben Sie es ein Optionsobjekt als zweiten Parameter für den ersten Aufruf (siehe ihre Dokumentation).

+0

Danke für die Antwort! Fühlt sich an, als wäre ich auf halbem Weg.Ich habe es mit Node-Fetch versucht, aber das Problem, das ich gerade habe, ist das Senden der "Client-ID". Da ich die Client-ID nicht sende, erhalte ich einen HTTP 400-Fehler. https://dev.twitch.tv/docs/v5/guides/using-the-twitch-api: "Anfragen können sowohl eine Client-ID als auch ein OAuth-Token enthalten. Anfragen ohne eine der beiden Anfragen schlagen mit einem HTTP-400-Fehler fehl. " – Smil3

+0

Sehen Sie, ** das ** ist, wie fetch –

+0

@ Smil3 zu verwenden scheint Es gibt zwei Möglichkeiten, es zu senden. Am einfachsten ist es, es zu Ihrer URL hinzuzufügen: 'twitch.url? Client_id = your_id_here'. Das andere wäre, es als Header zu senden (das ist, was das '-H' für cURL ist), was Sie tun können, indem Sie ein Objekt als zweiten Parameter an' fetch() 'mit den Headern übergeben:' fetch (url, { Kopfzeilen: {'Client-ID': 'Ihre_ID_Hier'}}) '. Wenn Sie darüber hinaus Hilfe benötigen, versuchen Sie, es selbst auszuarbeiten, und schreiben Sie dann eine neue Frage mit Ihrer aktualisierten Arbeit. – samanime