2016-09-11 39 views
5

"Yeni" kullanarak bu sınıfı başlatmaya çalışırken "HttpHandlers bir kurucu değil" hatası alıyorum. Bu atanmış zamanNode.js <Class> bir kurucu değil

2016-09-10T23:44:41.571-04:00 - [31merror[39m: Sun, 11 Sep 2016 03:44:41 GMT Worker #master: exiting from error: TypeError: HttpHandlers is not a constructor 
TypeError: HttpHandlers is not a constructor 
    at setupRestifyRoute (/usr/apps/das/src/myrepo/nodejs/myapp/lib/router.js:78:14) 
    at Router.setup_routes (/usr/apps/das/src/myrepo/nodejs/myapp/lib/router.js:40:3) 
    at /usr/apps/das/src/myrepo/nodejs/myapp/bin/server.js:222:14 
    at initialize (/usr/apps/das/src/myrepo/nodejs/myapp/bin/server.js:38:9) 
    at setup_server (/usr/apps/das/src/myrepo/nodejs/myapp/bin/server.js:107:4) 
    at /usr/apps/das/src/myrepo/nodejs/myapp/bin/server.js:275:4 
    at /usr/apps/das/src/myrepo/nodejs/myapp/node_modules/temp/lib/temp.js:231:7 
    at FSReqWrap.oncomplete (fs.js:123:15) 
+0

gerek yok o . HttpHandlers (oneRouteConfig.eventHandlers); 'sadece iyi çalışmalıdır. – vijayst

+0

@vijayst, Bunu denedim ve sonra aldığım hata "HttpHandlers bir işlev değil" – user994165

+0

Neden satır 2'deki yapılandırmayı yeniden yapılandırmanız gerekiyor? Sadece 'export.exports = HttpHandlers' kullanmak için ve ince olacaksınız – silkAdmin

cevap

10

:

Sınıf örneğinin oluşturulmasını (../lib/restifyHandlers/HttpHandlers):

var HttpHandlers = require('../lib/restifyHandlers/HttpHandlers'); 
var obj = new HttpHandlers(oneRouteConfig.eventHandlers); 

StackTrace:

var config = require('config'); 
module.exports.config = config; 

var util = require('util'); 
var _ = require('underscore'); 
var EventEmitter = require("events").EventEmitter; 

var HttpHandlers = function(eventHandlers) { 
    var _self = this; 
    this.name = "HttpHandlers"; 
    if (!(this instanceof HttpHandlers)) { 
     return new HttpHandlers(eventHandlers); 
    } 
} 

util.inherits(HttpHandlers, EventEmitter); 

HttpHandlers.prototype.extractHttpHandlersRequest = function(req, res, next) { 
    var _self = this; 
    req.locals = {}; 
    res.locals = {}; 

} 
module.exports.HttpHandlers = HttpHandlers; 

Kod çağrısı yapmadan :

exports.HttpHandlers = HttpHandlers; 

Bu işle eşleşmesi gerekir:

var HttpHandlers = require('../lib/restifyHandlers/HttpHandlers').HttpHandlers; 

Sen mülk, sen başvurmak zorunda istiyorsanız böylece .HttpHandlers, tüm modülü atama olmamak üzere modülün bir özelliğini atıyorsunuz

özellikler. Eğer başka bir yol çalışmak istiyorsanız, bu kadar değişebilir: o zaman,

exports = HttpHandlers; 

Ve senin require() böyle yapıyor şeklini işe yarayabilir: yeniye

var HttpHandlers = require('../lib/restifyHandlers/HttpHandlers'); 
+0

Teşekkürler kardeşim! Cevabın bana zaman kazandırdı. –

İlgili konular