2012-10-19 18 views
7

ich eine frisch von node.js läuft auf Windows 7 installieren, und ich versuche, einen sehr grundlegenden JQuery-Skript auszuführen, mit dem Namen a.js, das nur enthält:Fehler mit JQuery mit node.js

require("jquery"); 
$().jquery; 

Leider wird dies nicht mit JQuery laufen, mir einen Typeerror geben:

C:\Users\Ian>node a.js 

C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:10 
    window.XMLHttpRequest.prototype.withCredentials = false; 
         ^
TypeError: Cannot read property 'prototype' of undefined 
    at create (C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:10:26) 
    at C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:9435:18 
    at Object.<anonymous> (C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:9437:2) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:362:17) 
    at require (module.js:378:17) 
    at Object.<anonymous> (C:\Users\Ian\a.js:1:63) 

ich ein paar Bug-Report zu diesem Fehler durch Google gefunden habe, von denen die meisten Herabstufung JQuery vorschlagen. Wenn ich das mache, bekomme ich nur einen anderen Fehler. Das Folgende ist mit JQuery 1.6.3:

C:\Users\Ian>node a.js 

module.js:340 
    throw err; 
    ^
Error: Cannot find module 'location' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:362:17) 
    at require (module.js:378:17) 
    at create (C:\Users\Ian\node_modules\jquery\node-jquery.js:6:33) 
    at C:\Users\Ian\node_modules\jquery\node-jquery.js:9065:18 
    at Object.<anonymous> (C:\Users\Ian\node_modules\jquery\node-jquery.js:9067:2) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 

Kann jemand vorschlagen, was falsch sein kann? Ich habe verschiedene Neuinstallationen der Software ohne Glück versucht. Ich habe sowohl npm install -g als auch npm install sowohl für die Standardversion von jquery als auch für [email protected] ausprobiert.

Edit: This question - noch unbeantwortet - scheint verwandt.

+2

Warum führen Sie jQuery auf der Serverseite aus? – SLaks

+0

Keine gute Antwort sorry @SLaks - Ich benutze den Code von jemand anderem, der JQuery auf der Serverseite ausführt. Als ich das nicht funktionierte, kam ich auf mein triviales Testbeispiel, um sicherzustellen, dass das Problem nur mit dem JQuery-Teil und nicht mit dem Code der anderen Person auftrat. – Ina

+0

@Ina Ja, aber das ist das Problem, jQuery ist keine serverseitige Bibliothek, es hängt von Dingen ab, die im Knoten nicht vorhanden sind. –

Antwort

8

Wenn ur auf dem Knoten 0.10.x ... sudo npm Wiederaufbau

https://github.com/coolaj86/node-jquery/issues/35

+0

Super! Danke für die Rettung meines Abends :) – nuc

+0

Das hat mich früher auch. Ich habe Ubuntu ausgeführt. Apt get bekommt nur 0,6. Upgrade auf 0.10 und dann diesen Fehler. Die node_modules und reran npm install wurden bereinigt. – critium

0

Sie haben das Modul an das $ Variablen zuzuweisen:

var $ = require('jquery'); 
$().jquery; 
+1

True , aber der Fehler passiert in Zeile 1, also ist es nicht das undefinierte '$'. – pimvdb

+0

Dank @zeMirco, das ändert leider nichts von meinen Fehlern. – Ina

+0

Der Fehler muss im Rest Ihres Codes liegen, den Sie uns nicht gezeigt haben. Der erste Fehler besagt, dass 'window.XMLHttpRequest' nicht definiert ist. – zemirco

3

In der git-Seite für das jQuery-NodeJS Projekt, sagen, dass nicht funktioniert unter Windows, so dass das Problem ist Ihr Betriebssystem. https://github.com/coolaj86/node-jquery

+1

Ich habe das gleiche Problem, aber auf Mac OS X. Könnte etwas mit Knoten 0.10.0 zu tun haben, da ich es vor dem Upgrade nicht gesehen habe. –

+0

Das ist nicht wirklich korrekt: confectify lässt sich nicht einfach unter Windows erstellen, aber Sie können es mit node-gyp machen, wenn Sie die erforderlichen MS-Build-Tools installieren. Sobald Sie das tun, sollte jQuery installierbar sein. – Tom

0

Ich lief in dieser Frage auf REhI und sudo npm das Problem für mich gelöst wieder aufzubauen.

0

Für Windows die, die laufen, die npm Wiederaufbau kann nicht funktionieren und man könnte noch so etwas wie sehen:

C:\Projects\NODE\paragraphs\node_modules\jquery\lib\node-jquery.js:10 
window.XMLHttpRequest.prototype.withCredentials = false; 
        ^
TypeError: Cannot read property 'prototype' of undefined 

gefunden this solution dank Benutzer NeverI, die den Trick für mich getan hat:

In node-jquery.js (gefunden unter \ node_modules \ jquery \ lib) ändern sich die Linien:

if(window == null) { 
    window = require('jsdom').jsdom().createWindow(); 

bis:

if(!window || !window.document) { 
    window = require('jsdom').createWindow(); 
    window.document = require('jsdom').jsdom();