2016-03-31 65 views
2

當我部署到Heroku時,出現以下NPM錯誤。我的項目是mern stackNPM錯誤找不到「es2015」 - babel/node/react

錯誤:無法找到預設「ES2015」相對於目錄「/應用程序」

enter image description here

包似乎被正確安裝,我已經建立了一個正確的文件.babelrc和除了父目錄不同之外,本地和遠程相比沒有什麼不同。在Heroku上,父目錄顯然是「app」。這是我的NPM包:

"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" 
    } 

此外,npm start運行index.js它由以下部分組成:與babel-polyfillcss-modules-require-hook

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

我其實是越來越錯誤沒有被發現或某事(我不記得不幸),但是當我將它們從devDependencies添加到我的依賴項時,它似乎自行解決了。確定要在哪裏放置哪些包(任何提示?)是相當困難的。我真的很感激一些方向!

回答

4

從我的理解,heroku默認添加--production標誌,它不會安裝您的devdependencies。我會移動所有必要的依賴項來創建您的構建到devDep依賴項。 或

heroku config:set NPM_CONFIG_PRODUCTION=false 
+0

老兄,你100%正確。當我將所有devDependencies添加到它的依賴關係時,它就可以工作。但是,這不是不好的做法嗎?我怎樣才能區分生產中應該或不應該依賴的東西?謝謝你的幫助! –

+1

簡單地說就是運行應用程序需要依賴關係,devDependencies只需要開發應用程序。在你的情況下,heroku需要一些devDependencies在運行之前構建應用程序,因此你必須這樣做。但是你仍然可以忽略不用於創建構建的devDependencies,比如用於測試例如業力,量角器,短缺等的依賴項 –

相關問題