Node.JS对象原型可能只是一个Object,或者使用Redis为null

时间:2015-05-24 17:41:53

标签: javascript node.js redis

我一直在尝试为我的Node.JS API设置redis 我收到了这个错误:

util.js:634
  ctor.prototype = Object.create(superCtor.prototype, {
                          ^
TypeError: Object prototype may only be an Object or null: undefined
    at Function.create (native)
    at Object.exports.inherits (util.js:634:27)
    at Object.<anonymous> (/home/<user>/<project>/node_modules/redis/lib/parser/javascript.js:31:6)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/<user>/<project>/node_modules/redis/index.js:33:14)

这是我的代码:

console.log('Redis: ' + config.redis.host);
console.log('Redis: ' + config.redis.port);
console.log('Redis: ' + config.redis.pass);

redis       = require('redis');
redisClient = redis.createClient(
    config.redis.port, 
    config.redis.host, 
    {
        auth_pass: config.redis.pass
    }
);

config只是一个带有配置对象的require(&#39; config&#39;)文件。

2 个答案:

答案 0 :(得分:7)

问题是superCtor.prototypeundefinedObject.create唯一有效的第一个参数是null或非null对象引用;你不能使用原语(包括undefined)。

我们无法说明为什么 superCtor.prototype未在您引用的代码中定义,但这是Object.create的问题调用

答案 1 :(得分:1)

我想出了这个问题。我有一个名为Error的全局变量,它与redis以及其他一些依赖项冲突。

我通过简单地将Error重新命名为Errors来修复它。