具有ExpressJS错误的Node.js:无法读取未定义的属性“prototype”

时间:2013-04-02 20:51:00

标签: node.js express requirejs

运行node.js v0.10.2并表达v3.1.1(此时最新)并收到此错误:

/root/dmr-addresses/node_modules/jquery/lib/node-jquery.js:10
window.XMLHttpRequest.prototype.withCredentials = false;
                     ^
TypeError: Cannot read property 'prototype' of undefined
  at create (/root/dmr-addresses/node_modules/jquery/lib/node-jquery.js:10:26)
  at /root/dmr-addresses/node_modules/jquery/lib/node-jquery.js:9503:18
  at Object.<anonymous> (/root/dmr-addresses/node_modules/jquery/lib/node-jquery.js:9505: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> (/root/dmr-addresses/address/log.js:1:71)

log.js的第1行是:

var $ = require('jquery');

我已尝试运行npm install jquery,但尚未解决问题。

3 个答案:

答案 0 :(得分:9)

检查一下:

这里有同样的错误...... 我不知道我在做什么,但是我更改了 node-jquery.js第四行第五行并且它开始工作了:)

旧:

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

新:

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

答案 1 :(得分:1)

实际在节点服务器代码中没有原型对象,它全部存储在更好的__proto__ 对象中,你应该使用Object.create/defineProperty

你到底想要做什么?使用Node运行ajax查询?如果是这样,您应该使用Nodes http.request

一个例子可能是:

require('request').post({
    "uri"     : "http://example.com/",
    "headers" : {
        'content-type': 'application/json'
    },
    "body"    : "hello=world"
},
function(e,r,b){
    // e = errors, r = response and b = returned body
    console.log(b,r.statusCode));
});

答案 2 :(得分:1)

看起来这是node-jquery所依赖的jsdom模块的问题。这似乎是一个已知的问题,它已被修复,但尚未发布到npm。

检查出来:https://github.com/coolaj86/node-jquery/issues/52