2016-03-31 7 views
2

Ich bekomme den folgenden NPM-Fehler, wenn ich auf Heroku bereitstellen. Mein Projekt ist ein mern stack.NPM Fehler kann nicht finden "es2015" - babel/node/reagieren

Fehler: Es konnte keine Preset "es2015" relativ zum Verzeichnis "/ app"

enter image description here

Pakete scheinen korrekt installiert zu sein, ich habe eine .babelrc Datei richtig eingerichtet ist, und Nichts ist lokal anders verglichen mit remote als die übergeordneten Verzeichnisse sind unterschiedlich. Auf Heroku ist das Elternverzeichnis offensichtlich "app". Das sind meine NPM Pakete:

"dependencies": { 
    "babel-core": "^6.7.2", 
    "babel-polyfill": "^6.7.4", 
    "body-parser": "~1.12.0", 
    "cookie-parser": "~1.3.4", 
    "css-modules-require-hook": "^4.0.0", 
    "debug": "~2.1.1", 
    "express": "~4.12.2", 
    "react": "^0.14.7", 
    "react-dom": "^0.14.7", 
    "react-redux": "^4.4.1", 
    "react-router": "^2.0.1", 
    "redux": "^3.3.1", 
    "serve-favicon": "~2.2.0", 
    "webpack": "^1.12.13" 
    }, 
    "devDependencies": { 
    "babel-eslint": "^5.0.0", 
    "babel-loader": "^6.2.4", 
    "babel-plugin-react-transform": "^2.0.2", 
    "babel-polyfill": "^6.7.4", 
    "babel-preset-es2015": "^6.6.0", 
    "babel-preset-react": "^6.5.0", 
    "babel-preset-react-hmre": "^1.1.1", 
    "babel-register": "^6.7.2", 
    "css-modules-require-hook": "^4.0.0", 
    "redux-devtools": "^3.1.1", 
    "redux-devtools-dock-monitor": "^1.1.0", 
    "redux-devtools-log-monitor": "^1.0.4", 
    "webpack-dev-middleware": "^1.5.1", 
    "webpack-hot-middleware": "^2.10.0" 
    } 

, Des weiteren npm start verläuft index.js, die aus folgenden besteht:

require('babel-core/register'); 
require('babel-polyfill'); 
require('css-modules-require-hook'); 
require('./server/index'); 

Ich war eigentlich immer Fehler mit babel-polyfill und css-modules-require-hook nicht gefunden wird oder etwas (Ich kann mich leider nicht erinnern) aber als ich sie aus meinen devDependencies zu meinen Abhängigkeiten hinzufügte, schien es sich zu lösen. Es ist ziemlich schwierig zu bestimmen, welche Pakete wo eigentlich platziert werden sollen (irgendwelche Tipps?). Ich würde wirklich eine Richtung schätzen!

Antwort

4

Von dem, was ich verstehe, Heroku standardmäßig die --production Flag hinzufügen, die Ihre devdependencies inturn nicht installiert. Ich würde alle notwendigen Abhängigkeiten verschieben, um Ihr Build zu erstellen, um Abhängigkeiten abzubauen. oder

heroku config:set NPM_CONFIG_PRODUCTION=false 
+0

Mann, du bist zu 100% korrekt. Wenn ich alle meine devDependencies zu Abhängigkeiten hinzufüge, funktioniert es. Ist das nicht eine schlechte Übung? Wie kann ich unterscheiden, was eine Abhängigkeit in der Produktion sein sollte oder nicht? Danke für Ihre Hilfe! –

+1

einfach Put-Abhängigkeiten werden benötigt, um die Anwendung auszuführen, devDependencies sind nur erforderlich, um die Anwendung zu entwickeln. In Ihrem Fall benötigt Heroku einige devDependencies, um die Anwendung vor der Ausführung zu erstellen, daher müssen Sie das tun. Sie könnten aber auch devDependencies weglassen, die nicht zum Erstellen eines Builds verwendet werden, wie Abhängigkeiten zum Testen von zB Karma, Winkelmesser, Linting etc –

Verwandte Themen