Node.js Развертывание Heroku на Mac - sh: 1: nodemon: не найдено / npm ERR! `nodemon fileName.js` / npm ERR! Ошибка при запуске сценария ... - PullRequest
1 голос
/ 08 мая 2019

Развертывание на Heroku с помощью Node.js с использованием Mac

Моя проблема:

State changed from starting to crashed &&  
sh: 1: nodemon: not found &&  
Failed at...start script &&
status 1...code=H10

После создания моего интерфейса с React, внутренний сервер с node.js / express.js и база данных с PostgreSQL, я попытался развернуть свой сервер на Heroku с Git.Поскольку у меня уже был Git, я перешел на Heroku CLI

Сначала с terminal на моем сервере ...

brew install heroku/brew/heroku
heroku create
git remote -v
git push heroku master

Если вы не впервые используете Heroku ...

heroku git:remote -a theUrlYouWant
git push heroku master

... в противном случае ... Heroku динамически назначает вашему приложению порт, так что вы можетеНе устанавливайте порт с фиксированным номером.Heroku добавляет порт в env:

app.listen(process.env.PORT || 3000, () => {  
  console.log(`app is running on port ${process.env.PORT}`);
})  

... если вы добавили порт:

git add .
git commit -m "adding port"
git push heroku master

... наконец, из моего терминала на сервере:

➜ folderName git:(master) heroku open  
➜ folderName git:(master) heroku logs --tail

2019-05-08T18:07:23.253827+00:00 heroku[web.1]: Starting process with command npm start  
2019-05-08T18:07:25.323748+00:00 heroku[web.1]: State changed from starting to crashed  
2019-05-08T18:05:17.074233+00:00 app[web.1]: > nodemon fileName.js  
2019-05-08T18:05:17.074235+00:00 app[web.1]:   
2019-05-08T18:05:17.098124+00:00 app[web.1]: sh: 1: nodemon: not found  
2019-05-08T18:05:17.102512+00:00 app[web.1]: npm ERR! file sh  
2019-05-08T18:05:17.102801+00:00 app[web.1]: npm ERR! code ELIFECYCLE  
2019-05-08T18:05:17.103068+00:00 app[web.1]: npm ERR! errno ENOENT  
2019-05-08T18:05:17.103239+00:00 app[web.1]: npm ERR! syscall spawn    
2019-05-08T18:05:17.104259+00:00 app[web.1]: npm ERR! app@1.0.0 start: nodemon fileName.js  
2019-05-08T18:05:17.104361+00:00 app[web.1]: npm ERR! spawn ENOENT  
2019-05-08T18:05:17.104553+00:00 app[web.1]: npm ERR!  
2019-05-08T18:05:17.104692+00:00 app[web.1]: npm ERR! Failed at the app@1.0.0 start script.  
2019-05-08T18:05:17.104841+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above. 

[...]

2019-05-08T18:05:17.171915+00:00 heroku[web.1]: Process exited with status 1  
2019-05-08T18:05:37.338695+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno= connect= service= status=503 bytes= protocol=https  

1 Ответ

1 голос
/ 09 мая 2019

Heroku по умолчанию работает в производственной среде, поэтому он не устанавливает зависимости dev.

Если вы не хотите переустанавливать nodemon как зависимость, что, по-моему, не следует, поскольку это правильноместо находится в devDependencies, а не в зависимостях ...

Вместо этого вы можете создать второй скрипт npm в вашем package.json, чтобы избежать этой ошибки, запустив nodemon только на вашем локальном хосте:

"scripts": {
    "start": "node fileName.js",
    "start:dev": "nodemon fileName.js"
},  

И когда вы хотите запустить проект локально, просто запустите в своем терминале npm start:dev, и он загрузит fileName.js с nodemon.

В то время как в Heroku, npm start запускаетсяпо умолчанию загружает fileName.js из обычной команды узла, и вы избавляетесь от этой ошибки.

2019-05-08T18:13:40.319989+00:00 heroku[web.1]: State changed from crashed to starting  
2019-05-08T18:13:41.000000+00:00 app[api]: Build succeeded  
2019-05-08T18:13:42.658048+00:00 heroku[web.1]: Starting process with command npm start  
2019-05-08T18:13:44.644005+00:00 app[web.1]: 
2019-05-08T18:13:44.644025+00:00 app[web.1]: > app@1.0.0 start /app  
2019-05-08T18:13:44.644027+00:00 app[web.1]: > node fileName.js  
2019-05-08T18:13:44.644028+00:00 app[web.1]:   
2019-05-08T18:13:45.158694+00:00 app[web.1]: app is running on port 33333  
2019-05-08T18:13:46.293205+00:00 heroku[web.1]: State changed from starting to up  
2019-05-08T18:13:47.788861+00:00 heroku[router]: at=info method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno=web.1 connect=0ms service=11ms status=200 bytes=245 protocol=https

Я сделал этот пост в надежде помочь вам избежать того времени, которое понадобилось мне для отладки этой проблемы.

...