使用jQuery与node.js的错误

我有一个在Windows 7上运行的node.js的全新安装,我试图运行一个非常基本的JQuery脚本,名为a.js ,其中只包含:

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

不幸的是,这不会与JQuery运行,给我一个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) 

我通过Google发现了一些关于这个错误的错误报告,其中大部分都提示降级JQuery。 但是,当我这样做,我只是得到一个不同的错误。 以下是使用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) 

任何人都可以提出什么可能是错的? 我已经尝试了各种软件重新安装,没有运气。 我已经尝试了npm install -gnpm install jquery的默认版本和jquery@1.6.3。

编辑: 这个问题 – 尚未答复 – 似乎有关。

如果您在节点0.10.x上运行sudo npm rebuild

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

在jquery-nodejs项目的git页面中说,这不适用于Windows,所以问题在于你的操作系统。 https://github.com/coolaj86/node-jquery

您必须将模块分配给$variables:

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

我在REHL上遇到了这个问题,sudo npm rebuild为我解决了这个问题。

对于那些运行Windows, npm重build可能无法正常工作,你可能仍然会看到类似于:

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

find这个解决scheme感谢用户NeverI为我做的伎俩:

在node-jquery.js(在\ node_modules \ jquery \ lib下find)改变行:

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

至:

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