2016-04-13 8 views
0

Я тестирую Mern Stack (Mongo Express React/Redux Node) и настроил его без проблем. Теперь я пытаюсь развернуть в Хероку. Я сделал git push heroku master, как обычно, но когда я просматриваю сайт, я вижу ошибку приложения Heroku. Я добавил MongoDB через Heroku и изменил свои параметры конфигурации heroku, поэтому он использует этот db (я думаю, что сделал это правильно). Так что проверить в журналах:Как заставить Mern Stack работать на Heroku

npm ERR! file sh 
npm ERR! code ELIFECYCLE 
npm ERR! errno ENOENT 
npm ERR! syscall spawn 
npm ERR! [email protected] start: `cross-env NODE_ENV=development nodemon index.js` 
npm ERR! spawn ENOENT 

Немного вниз:

> [email protected] start /app 
> cross-env NODE_ENV=development nodemon index.js 
    sh: 1: cross-env: not found 

Далее вниз:

npm ERR! Linux 3.13.0-79-generic 
npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start" 
npm ERR! node v5.10.0 
npm ERR! npm v3.8.3 
npm ERR! file sh 
npm ERR! code ELIFECYCLE 
npm ERR! errno ENOENT 
npm ERR! [email protected] start: `cross-env NODE_ENV=development nodemon index.js` 
npm ERR! syscall spawn 
npm ERR! spawn ENOENT 
npm ERR! 
npm ERR! Failed at the [email protected] start script 'cross-env NODE_ENV=development nodemon index.js'. 

Так что я не знаю, как много о задней части, но как представляется, запускает сценарий разработки в пакете. json:

"scripts": { 
    "test": "mocha shared/tests/*.spec.js --compilers js:babel-register", 
    "test:server": "cross-env NODE_ENV=test PORT=8080 MONGO_URL=mongodb://localhost:27017/mern-test mocha --compilers js:babel-register --recursive server/tests/**/*.spec.js", 
    "start": "cross-env NODE_ENV=development nodemon index.js", 
    "start:prod": "cross-env NODE_ENV=production node index.js", 
    "bs": "npm run clean && npm run build && npm run start:prod", 
    "minify": "cleancss -o static/css/app.min.css static/css/app.css", 
    "build": "cross-env NODE_ENV=production webpack --config webpack.config.prod.js && npm run minify", 
    "clean": "rimraf static/dist", 
    "slate": "rimraf node_modules && npm install", 
    "lint": "eslint client server shared" 
    } 

Итак, как я могу заставить это работать?

EDIT:

"devDependencies": { 
    "babel-eslint": "^5.0.0-beta6", 
    "babel-loader": "^6.2.1", 
    "babel-plugin-react-transform": "^2.0.0", 
    "babel-plugin-transform-react-constant-elements": "6.5.0", 
    "babel-plugin-transform-react-inline-elements": "6.6.5", 
    "babel-plugin-transform-react-remove-prop-types": "0.2.4", 
    "babel-polyfill": "^6.3.14", 
    "babel-preset-es2015": "^6.3.13", 
    "babel-preset-react": "^6.3.13", 
    "babel-preset-react-hmre": "^1.1.0", 
    "babel-register": "^6.7.2", 
    "chai": "^3.5.0", 
    "clean-css": "^3.4.9", 
    "cross-env": "^1.0.7", 
    "css-loader": "^0.23.1", 
    "css-modules-require-hook": "^2.1.0", 
    "deep-freeze": "0.0.1", 
    "eslint": "^1.10.3", 
    "eslint-config-airbnb": "^4.0.0", 
    "eslint-plugin-react": "^3.16.1", 
    "expect": "^1.13.4", 
    "expect-jsx": "^2.2.2", 
    "extract-text-webpack-plugin": "^1.0.1", 
    "mocha": "^2.4.5", 
    "nodemon": "^1.9.1", 
    "pre-commit": "^1.1.2", 
    "react-addons-test-utils": "^0.14.7", 
    "react-transform-hmr": "^1.0.1", 
    "redux-devtools": "^3.1.1", 
    "redux-devtools-dock-monitor": "^1.1.0", 
    "redux-devtools-log-monitor": "^1.0.4", 
    "rimraf": "^2.5.1", 
    "style-loader": "^0.13.0", 
    "supertest": "^1.1.0", 
    "webpack": "^1.12.12", 
    "webpack-dev-middleware": "^1.5.1", 
    "webpack-hot-middleware": "^2.6.4" 
    }, 
+0

Можете ли вы разместить свои зависимости package.json? Включен ли 'cross-env'? Или вы можете подтвердить, что вы выполнили 'npm install' перед выполнением команд? – lux

+0

Он отредактирован, чтобы показать dev-зависимости. кросс-энв есть. Должна ли быть зависимость? – jro

+0

И вы запускали 'npm install' до' npm run <независимо от вашей команды скрипта> '? – lux

ответ

1

Я писал об этом здесь: https://hashnode.com/post/deploying-mern-to-heroku-success-cio7sc1py013nis531rg3lfmz

Причина в том, что herokou не знает о вашем devDependencies дерево, только ваши регулярные dependencies получить толкнул.

Быстрое исправление необходимо скопировать все ваши devDependencies на ваш dependencies

Вы также должны удалить следующие из .gitignore файла:

public/* static/dist static/css/app.min.css

Есть несколько других шагов I изложенные в статье, но это основные причины, по которым он не будет работать без каких-либо дополнительных конфигураций.

+0

Я следил за учебником, но мое приложение не запускается. Когда я запускаю команду «heroku run node server.js» с сервера heroku cli, запускается на порт 8080, но не может получить к нему доступ. говорит ошибка приложения. Я добавил ссылку mLab в качестве пути к базе данных (не динамометр, так как он просит ввести кредитную карту). Вы можете помочь мне разобраться в этом? – HelpingHand

+0

Проверьте журналы с помощью 'heroku logs -tail', которые должны дать некоторое представление об ошибке, которая вызывает сбой – jakeed1