2013-07-09 19 views
9

modülü gerektiren bir hata yakalayın. Temelde programın içinden "Modül bulamıyor" hatasını yakalamak istiyorum ve isteğe bağlı olarak yüklemeyi istemek istiyorum, ancak herhangi bir hata yakalamam mümkün görünmüyor. Bu mümkün mü? Onu hiçbir yerde görmedim. Örneğinbu her yerde herhangi makaleleri bulmak için görünmüyor node.js

:

Bu herhangi bir 3. parti gerektirir olmadan ayrı .js başlangıç ​​dosyası ile yapılır ve sadece node_modules kontrol etmek fs kullanır ve daha sonra isteğe bağlı olarak çocuk süreçten npm install çalışır olabilir varsayalım
try { 
    var express = require('express'); 
} catch (err){ 
    console.log("Express is not installed."); 
    //proceed to ask if they would like to install, or quit. 
    //command to run npm install 
} 

daha sonra başka bir çocukla node app çalışır. Ama buna sende benim için çalışıyor tek app.js dosyası

+1

'kendisi bu düşündürmektedir require' Uygulamanın çalışması için modül gereklidir. Bana sorarsan '' modül bulamıyor '' kendini açıklayıcı bir hata mesajıdır. Bir geliştirici olarak, başkalarının uygulamanızı kullanmasını istiyorsanız, tüm bağımlılıkları paketinize dahil etmek sizin sorumluluğunuzdur. – Amberlamps

+1

@Amberlamps Genellikle bir uygulamanın paketinin bir parçası olarak bağımlılık sağlamadığı, ancak kullanım sırasında indirilmesini sağlaması genellikle daha iyidir. Eski/eski modülleri sağlamak ve boşa harcamamak için. 'Package.json' ve 'npm install''in amacı budur. Bu çözüm için avım, uygulamanızı mümkün olduğunca kullanıcı dostu ve otomatik hale getirmek için. – krb686

cevap

6

içinden bunu yapmak kolay olurdu gibi geliyor. Gereksinim duyduğunuz dosya sistemindeki herhangi bir yerinizde node_modules/express klasörünün bulunmadığından emin misiniz? neler olup bittiğini net olması için bu yöntemi deneyin: Verilen modül için

try { 
    var express = require('express'); 
    console.log("Express required with no problems", express); 
} catch (err){ 
    console.log("Express is not installed."); 
    //proceed to ask if they would like to install, or quit. 
    //command to run npm install 
} 
+0

Bunu nasıl çözdüğümü bilmiyorum, ama node_modules klasörünü sildim ve şu anda gayet iyi çalışıyor gibi görünüyor. Teşekkürler. Cevabınızı tekrar denememi ve düzeltilmesini istediğim için kabul edeceğim. – krb686

16

doğru, emin olun yapmak için sadece Modülü yakalamak bulunamadı hatası:

try { 
    var express = require('express'); 
} catch (e) { 
    if (e.code !== 'MODULE_NOT_FOUND') { 
     // Re-throw not "Module not found" errors 
     throw e; 
    } 
    if (e.message.indexOf('\'express\'') === -1) { 
     // Re-throw not found errors for other modules 
     throw e; 
    } 

} 
İlgili konular