2012-10-19 10 views
7

Mam nową instalację node.js uruchomionych na Windows 7 i próbuję uruchomić bardzo prosty skrypt jQuery o nazwie a.js, który zawiera tylko:Błędy przy użyciu jQuery z node.js

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

Niestety, to nie będzie działać z JQuery, dając mi 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) 

znalazłem kilka raportów o błędach na temat tego błędu poprzez Google, z których większość sugerują Obniżanie jQuery. Kiedy jednak to zrobię, dostaję inny błąd. Poniżej jest z 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) 

Może ktoś sugerują, co może być nie tak? Próbowałem różnych reinstalacji oprogramowania bez powodzenia. Próbowałem zarówno npm install -g i npm install zarówno dla domyślnej wersji jquery, a także [email protected]

Edytuj: This question - jeszcze nieodebrane - wydaje się powiązane.

+2

Dlaczego używasz jQuery po stronie serwera? – SLaks

+0

No good answer sorry @SLaks - Używam cudzego kodu, który uruchamia JQuery po stronie serwera. Kiedy nie udało mi się uzyskać tego działającego, wymyśliłem mój trywialny przykład testowy, aby upewnić się, że problem dotyczy tylko części JQuery, a nie czegokolwiek innego w kodzie drugiej osoby. – Ina

+0

@Ina Tak, ale to jest problem, jQuery nie jest biblioteką serwerów, opiera się na rzeczach nieobecnych w węźle. –

Odpowiedz

8

Jeśli ur na węźle 0.10.x ... uruchom sudo npm odbudować

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

+0

Awesome! Dziękuję za uratowanie mojego wieczoru :) – nuc

+0

To też mnie wcześniej. Prowadziłem ubuntu. Apt dostaje tylko 0,6. Zaktualizowano do 0.10, a następnie ten błąd. Oczyszczone moduły node_modules i reran npm install. – critium

0

Musisz przypisać moduł do zmiennej $:

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

True , ale błąd występuje w linii 1, więc nie jest niezdefiniowanym '$'. – pimvdb

+0

Dzięki @zeMirco, niestety to nie zmienia żadnego z moich błędów. – Ina

+0

Błąd musi znajdować się w pozostałej części kodu, który nie został nam pokazany. Pierwszy błąd mówi, że 'window.XMLHttpRequest' jest niezdefiniowany. – zemirco

3

Na stronie git dla projektu jQuery nodejs, mówi, że nie działa na Windows, więc problem jest system operacyjny. https://github.com/coolaj86/node-jquery

+1

Mam ten sam problem, ale na Mac OS X. Może mieć coś wspólnego z węzłem 0.10.0, ponieważ nie widziałem, aby stało się to przed aktualizacją. –

+0

To nie jest prawda: kontekstify nie buduje się łatwo w systemie Windows, ale można to zrobić za pomocą node-gyp, jeśli zainstalujesz wymagane narzędzia do kompilacji MS. Po wykonaniu tej czynności jQuery powinien zostać zainstalowany. – Tom

0

wpadłem na ten problem na REHL i sudo npm odbudować rozwiązał problem dla mnie.

0

Dla tych z systemem Windows, npm odbudować może nie działać i może jeszcze zobaczyć coś takiego:

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

Znaleziono this solution dzięki użytkownik NeverI że wystarczyły dla mnie:

W node-jquery.js (znajdujący się w katalogu \ node_modules \ jquery \ lib) zmienia linie:

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

do:

if(!window || !window.document) { 
    window = require('jsdom').createWindow(); 
    window.document = require('jsdom').jsdom(); 
Powiązane problemy