2016-05-10 18 views
0

OK, ich habe einen Express-App finden, die diesen Fehler beim Start werfen, wenn sie Heroku im Einsatz. Die App kompiliert und läuft gut lokal:Heroku: Kann nicht Modul ‚mongodb‘

Cannot find module 'mongodb' 

Diese App wurde ausgeführt, bis ich es gestern umgeschichtet ... hier ist mein package.json die

{ 
    "name": "fitness-tracker", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
     "start": "node ./bin/www" 
    }, 
    "dependencies": { 
     "express": "~4.9.0", 
     "body-parser": "~1.8.1", 
     "cookie-parser": "~1.3.3", 
     "promise": "~6.0.1", 
     "morgan": "~1.3.0", 
     "serve-favicon": "~2.1.3", 
     "debug": "~2.0.0", 
     "mongodb-core": "*", 
     "mongoskin": "~2.0.0", 
     "express-handlebars": "~1.1.0", 
     "moment": "~2.0.0", 
     "moment-timezone": "^0.3.1", 
     "q": "~1.0.1", 
     "compass": "~0.1.0", 
     "apm": "*" 
    }, 
    "devDependencies": { 
     "moment-timezone": "^0.3.1" 
    } 

Ideen unverändert war?

+3

Haben Sie versucht, eine saubere Installation auf Ihrer eigenen Maschine durchzuführen? Versuchen Sie auch, 'engines' Feld in Ihrem' package.json' hinzuzufügen. –

+1

Durch die Angabe der Knotenversion in Suchmaschinen wurde das Problem behoben. Vielen Dank! – SDG

Antwort

1

So war die Frage Auflösung des Pakets basierend auf Knoten-Version. Da sich NodeJS schnell entwickelt, ist es eine gute Übung, die engines Spezifikation in Ihre package.json aufzunehmen.

Wenn verschiedene Cloud-Anbieter tun automatische Installationen auf, das hilft ihnen nur bestimmte Knoten & npm Version zu verwenden. Dies waren alle Pakete, die Fetches für diese Knotenversion erstellen, daher weniger Gefahr, dass sich die App schlecht verhält.

Lesen Sie mehr: https://docs.npmjs.com/files/package.json#engines

0

auch immer einen Versuch wert: Deaktivieren Sie den Cache Heroku bauen das node_modules Verzeichnis neu zu erstellen.

Im Heroku CLI schreiben:

$ heroku config:set NODE_MODULES_CACHE=false 
$ git commit -am 'disable node_modules cache' --allow-empty 
$ git push heroku master 

Wie beschrieben here.