2017-02-02 5 views
-1

Ich bin sehr neu in JavaScript. Und ich versuche, eine .js-Datei auszuführen, die jquery verwendet, um andere Skripte mit Knoten zu laden. Meine Js-Datei wird test.js genannt und wie folgt:

require("jsdom").env("", function(err, window) { 
    if (err) { 
     console.error(err); 
     return; 
    } 
    var $ = require("jquery")(window); 
    $.getScript("./svmjs/lib/svm.js").done(function(){ 
     console.log("loaded!") 
    }).fail(function(){ 
     console.log("failed!") 
    }); 
}) 

Ich versuche, mit dem Befehl node test.js es auf dem Mac zu laufen, aber ich nichts Ausgabe in der Konsole. Was mache ich hier falsch? Mein Eindruck ist, dass mit done oder fail es zumindest etwas ausgeben wird. Aber ich bekomme nichts. Irgendwelche Ideen?

+3

Einfach nur neugierig: Gibt es einen Grund, warum Sie nicht nur 'require' mit? –

+0

@MikeC Keine besonderen Gründe. Dies ist die Lösung, die ich während der Suche im Internet bekomme. Und ich denke, um zu verlangen, muss das Skript installiert werden? Einige der Skripte sind meine eigenen Skripte, von denen ich nicht weiß, wie ich sie installieren soll. – Psidom

+1

Um 'require' zu ​​verwenden, müssen die Dateien nur in Ihrem Dateisystem existieren, relativ zu dem Ort, von dem aus Sie die Datei starten. Entweder das oder du installierst sie mit 'npm install', so wie ich es mit' jsdom' angenommen habe. Es ist sehr selten, dass Sie sogar jQuery auf der Serverseite verwenden müssen. –

Antwort

1

$.getScript wird verwendet, um Skripte auf der Browserseite zu laden. In Node.js haben Sie ein besseres Werkzeug: require.

Nur require Ihre Module direkt anstelle von jQuery. In der Tat ist es unwahrscheinlich, dass Sie überhaupt jQuery benötigen.

ändern

$.getScript("./svmjs/lib/svm.js").done(function(){ 
    console.log("loaded!") 
}).fail(function(){ 
    console.log("failed!") 
}); 

zu

require('./svmjs.lib.svm.js'); 
-2

Ich nehme an, dass jQuery/$ undefined ist. Sie müssen es in Ihrem Projekt installieren mit:

npm install jquery --save

Nachdem Sie das tun, var $ = require('jquery'); zum Anfang der Datei hinzufügen.

Wenn Sie nicht im Browser arbeiten und streng Node verwenden, müssen Sie require anstelle von jQuerys getScript-Funktion verwenden. getScript ist besser für Browser-Anwendungen geeignet.

0

jQuery wird wahrscheinlich nicht in Node.js arbeiten, da es stark auf den Browser hängt DOM, die in Node.js nicht vorhanden ist (es gibt kein window Objekt oder anderer Code, der nur in einer Browserumgebung enthalten ist). Außerdem benötigen Sie jQuery nicht zum Laden von NPM-Paketen.

Stattdessen sollten Sie etwas tun:

  1. Navigieren Sie zu dem Projektverzeichnis in einer Befehlszeile. Generieren Sie eine package.json, wenn Sie das nicht bereits getan haben, indem Sie npm init ausführen und den Anweisungen folgen.
  2. Registrieren Sie , eine Node.js-kompatible Version von SVM, als eine Abhängigkeit durch Ausführen von npm install --save node-svm.
  3. Führen Sie npm install aus, um und seine Abhängigkeiten herunterzuladen. Sie werden im Unterverzeichnis node_modules installiert.
  4. In index.js oder was auch immer der Eintrittspunkt des Projektes (in der main Eigenschaft package.json diesem Beispiel definiert folgen und Sie sollten gut zu gehen.
  5. Run node index.js und Konsolenausgabe überprüfen.

Index .js

var svm = require('node-svm'); 

var xor = [ 
    [[0, 0], 0], 
    [[0, 1], 1], 
    [[1, 0], 1], 
    [[1, 1], 0] 
]; 

// initialize a new predictor 
var clf = new svm.CSVC(); 

clf.train(xor).done(function() { 
    // predict things 
    xor.forEach(function(ex){ 
     var prediction = clf.predictSync(ex[0]); 
     console.log('%d XOR %d => %d', ex[0][0], ex[0][1], prediction); 
    }); 
}); 

Ausgabe

0 XOR 0 => 0 
0 XOR 1 => 1 
1 XOR 0 => 1 
1 XOR 1 => 0