2015-10-08 44 views
37

Bir dosyaya ihtiyaç duymaya çalışıyorum ve daha sonra bunu bir varlığa geçiriyorum. Bir kimlik doğrulama sistemi oluşturmak için this eğitimini takip ediyorum. Server.js dosyasını yazdıktan ve derlemeye çalıştıktan sonra bson hatası aldım, bu yüzden mongoose'da yayın sürümünü gerektiren satırı değiştirdim.NodeJs: TypeError: require (...) bir işlev değil

server.js

require('./app/routes')(app, passport); 

Hata Bu genellikle gerektiren anlamına gelir okudum

require('./app/routes')(app, passport); 
       ^

TypeError: require(...) is not a function 
      at Object.<anonymous> (d:\Node JS learning\WorkWarV2\server.js:38:24) 
      at Module._compile (module.js:434:26) 
      at Object.Module._extensions..js (module.js:452:10) 
      at Module.load (module.js:355:32) 
      at Function.Module._load (module.js:310:12) 
      at Function.Module.runMain (module.js:475:10) 
      at startup (node.js:117:18) 
      at node.js:951:3 

Process finished with exit code 1 

: Burada

benim kod ve hata vardır JS düzgün bir şekilde yüklenmiyor ancak neden veya nasıl düzeltileceğinin farkında değilim. nedeniyle

Düzenleme yorum yapmak: istedi gibi

, here Bunun senin ./app/routes modülde module.exportsrequire('./app/routes') bu nedenle bir işlevi olarak atanmamış anlamına gelir düşünüyorum console.log(require);

+0

Can sen 'console.log (gerektiren)' başarısız satırdan önce? Sunucu tarafında requireJS'ye gereksiniminiz olmamalıdır, node.js'nin yerleşik bir modül sistemi vardır (CommonJS, ayrıca 'require' işlevini de kullanır). Bir şey global 'require' değişkenini değiştiriyor gibi görünüyor. – kraf

cevap

50

sonucudur Bu nedenle bir işleve çözümlenmez, bu nedenle bu require('./app/routes')(app, passport) gibi bir işlev olarak çağıramazsınız.

Bize daha fazla yorum yapabilmemiz için bize ./app/routes numaralı telefondan ulaşabilirsiniz.

+2

Evet, düzeltildi, onu bir işlev yapmayı unuttun ... Thnx. – user1640736

-3

Otomatik yükleyici modülünün kurulması sorunumu çözdü. require('autoloader').autoload(__dirname + '/src'); Not

require('autoloader')(__dirname + '/src'); için: Nereden

npm install autoloader. 

Ve aşağıdaki gibi kodunu değiştirmek .. .. özdevinimli_yükle biz modüllerin çok emin modül adı olun .. Benim için

8

bu oldu döngüsel bağımlılıklar ile ilgili bir sorun.

IOW, modül gerekli bir modül B ve modül B gerekli modül A Böylece modül B, require('./A') boş bir nesne yerine bir fonksiyonudur.

How to deal with cyclic dependencies in Node.js

-3

sizin routes.js dışa unutmayın.

routes.js yılında

bu işlev modülünde rotalarınızı ve tüm kod yazmak:

exports = function(app, passport) { 

/* write here your code */ 

} 
İlgili konular