使用带有node.js的JQuery的错误

时间:2012-10-19 17:38:54

标签: jquery node.js npm

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

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)

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

编辑:This question - 尚未答复 - 似乎相关。

5 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

您必须将模块分配给$变量:

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

对于那些运行Windows的人来说, npm rebuild 可能无法正常工作,您可能仍会看到以下内容:

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

发现this solution感谢用户NeverI为我做了诀窍:

在node-jquery.js(位于\ node_modules \ jquery \ lib下)更改行:

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

为:

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