2012-10-19 2 views
7

ho una nuova installazione di node.js in esecuzione su Windows 7, e sto cercando di eseguire uno script JQuery molto semplice, chiamato a.js, che contiene solo:errori utilizzando jQuery con node.js

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

Purtroppo, questo non verrà eseguito con JQuery, dandomi un TypeError:

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) 

ho trovato un paio di segnalazioni di bug su questo errore tramite Google, la maggior parte dei quali suggeriscono declassamento JQuery. Tuttavia, quando lo faccio, ho solo un errore diverso. Il seguente è con 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) 

Qualcuno può suggerire cosa potrebbe essere sbagliato? Ho provato varie reinstallazione del software senza fortuna. Ho provato sia npm install -g e npm install sia per la versione predefinita di jquery che [email protected]

Modifica: This question - non ancora risposta - sembra correlato.

+2

Perché si esegue jQuery sul lato server? – SLaks

+0

Nessuna buona risposta mi dispiace @ SLaks - Sto facendo uso del codice di qualcun altro che esegue JQuery sul lato server. Quando non sono riuscito a farlo funzionare, mi è venuto in mente il mio banale esempio di test per assicurarmi che il problema riguardasse solo la parte JQuery e non qualsiasi altra cosa nel codice dell'altra persona. – Ina

+0

@Ina Sì, ma questo è il problema, jQuery non è una libreria serveride, si basa su cose non presenti nel nodo. –

risposta

8

Se ur sul nodo 0.10.x ... eseguito sudo npm ricostruire

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

+0

Fantastico! Grazie per aver salvato la mia serata :) – nuc

+0

Questo mi ha già fatto prima. Stavo usando Ubuntu. Apt ottiene solo si ottiene 0.6. Aggiornato a 0.10 e poi questo errore. Pulito il node_modules e reran npm install. – critium

0

È necessario assegnare il modulo alla variabile $:

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

True , ma l'errore si verifica sulla riga 1, quindi non è un '$' indefinito. – pimvdb

+0

Grazie a @zeMirco, purtroppo questo non modifica nessuno dei miei errori. – Ina

+0

L'errore deve essere nel resto del codice che non ci hai mostrato. Il primo errore dice 'window.XMLHttpRequest' non è definito. – zemirco

3

Nella pagina git per il progetto jquery-nodejs, dice che non funziona su Windows, quindi il problema è il vostro sistema operativo. https://github.com/coolaj86/node-jquery

+1

Ho lo stesso problema, ma su Mac OS X. Potrebbe avere qualcosa a che fare con il nodo 0.10.0 perché non l'ho visto accadere prima dell'aggiornamento. –

+0

Questo non è proprio accurato: contextify non si costruisce facilmente su Windows, ma è possibile farlo utilizzando node-gyp se si installano gli strumenti di MS build richiesti. Una volta fatto, jQuery dovrebbe essere installabile. – Tom

0

mi sono imbattuto in questo problema in REHL e sudo NPM ricostruzione è risolto il problema per me.

0

Per quelli con sistema operativo Windows, il NPM ricostruire non può funzionare e si potrebbe ancora vedere qualcosa di simile:

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

Trovato this solution grazie alla user NeverI che ha fatto il trucco per me:

In node-jquery.js (trovato in \ node_modules \ jquery \ lib) modifica le righe:

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

a:

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