web-dev-qa-db-fra.com

NODE.JS HEROKU Déploiement sur Mac - SH: 1: NODEMON: Non trouvé / NPM ERR! `Nodemon FileName.js` / NPM ERR! Échec du ... START Script

Déploiement sur Heroku avec Node.js utiliser Mac

Mon problème :

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

Après avoir créé mon front-end, avec React, serveur arrière, avec node.js/express.js et base de données, avec PostgreSQL, j'ai tenté de déployer mon serveur sur Heroku avec Git. Depuis que j'ai déjà eu Git, je me suis déplacé sur Heroku CLI

Tout d'abord, à partir du terminal dans mon serveur ...

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

Si ce n'est pas votre première fois en utilisant Heroku...

heroku git:remote -a theUrlYouWant
git Push heroku master

... sinon ...Heroku _ attribue dynamiquement votre application un port, vous ne pouvez donc pas définir le port sur un numéro fixe. Heroku ajoute le port à l'env:

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

... Si vous avez ajouté le port:

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

... Enfin, de mon terminal dans le serveur :

➜ 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! [email protected] 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 [email protected] 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  
7
Q.McKinley

Heroku passe par défaut dans un environnement de production afin qu'il n'installe pas les dépendances DEV.

Si vous ne voulez pas réinstaller NODEMON comme une dépendance, ce que je pense que vous ne devriez pas, parce que c'est le bon endroit est dans DevDePendances, pas dans les dépendances ...

Au lieu de cela, vous pouvez créer un deuxième script NPM, dans votre package.json, pour éviter cette erreur en exécutant nodemon uniquement dans votre localhost:

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

Et lorsque vous souhaitez exécuter le projet localement, il suffit de courir dans votre terminal npm start:dev et il chargera fileName.js avec nodemon.

À Heroku, npm start Exécute par défaut et chargez le nom de fichier.js à partir d'une commande NODE NORMAL et vous vous débarrassez de cette erreur.

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]: > [email protected] 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

J'ai fait ce message dans l'espoir de vous aider à éviter le temps qu'il m'a fallu de déboguer cette question.

2
Q.McKinley

Voici ce qui a fonctionné pour moi:

Dans votre application Heroku, allez à Settings, puis cliquez sur Reveal Config Vars puis ajouter un nouvel enregistrement avec KEYNPM_CONFIG_PRODUCTION et Value _ false.

0
Justice Bringer