En esta segunda parte vamos a indagar mas acerca de cómo podemos implementar Node.js con Heroku, para que así puedas realizar tu propia aplicación y llevar a cabo tus proyectos usando estas poderosas herramientas. Si te perdiste la primera parte, checa esto: ¿Cómo implementar Node.js con Heroku o Docker? Parte 1
Déclaration des dépendances d'application
Heroku reconnaît une application comme Node.js par l'existence d'un fichier appelé package.json dans le répertoire racine.
Pour vos propres applications, vous pouvez en créer une en exécutant la commande suivante: npm init - oui
.
L'application de démonstration que vous avez déployée a déjà un package.json, et cela ressemble à ceci:
{ "name": "node-js-getting-started", "version": "0.3.0", ... "engines": { "node": "8.11.1" }, "dependencies": { "ejs": "^2.5.6", "express": "^4.15.2" }, ... }
L'archive package.json détermine à la fois la version de Node.js qui sera utilisé pour exécuter votre application sur Heroku, comme les dépendances qui doivent être installées avec votre application.
Lorsqu'une application est déployée, Heroku lit ce fichier et installe la version Node appropriée avec les dépendances à l'aide de la commande npm installer
.
Exécutez cette commande dans votre répertoire local pour installer les dépendances, cela va à votre système pour exécuter l'application localement:
$ npm install added 132 packages in 3.368s
Une fois les dépendances installées, vous êtes prêt à exécuter votre application localement.
Exécuter l'application localement
Vous devez maintenant démarrer votre application localement à l'aide de la commande suivante heroku local
, qui a été installé dans le cadre de la CLI Heroku:
$ heroku local web [OKAY] Loaded ENV .env File as KEY=VALUE Format 1:23:15 PM web.1 | Node app is running on port 5000
Comme Heroku, heroku local
examinez le fichier Procfile pour déterminer ce qu'il faut exécuter.
Puis ouvrez l'adresse http://localhost:5000 en toi le navigateur la toile de preferencia. Deberías ver tu aplicación ejecutándose de forma local.
Si vous souhaitez empêcher l'application de s'exécuter localement, dans la CLI, appuyez sur Ctrl + C
pour sortir.
Apportez des modifications locales
Dans cette étape, vous apprendrez facilement à propager une modification locale à votre application via Heroku. A titre d'exemple, vous allez modifier l'application pour ajouter une dépendance supplémentaire et le code pour l'utiliser.
Commencez par ajouter une dépendance pour cool-ascii-faces
dans le package.json
. Pour ce faire, exécutez la commande suivante:
$ npm install cool-ascii-faces + [email protected] added 9 packages in 2.027s
Vous devez modifier indice.js afin que vous ayez besoin de ce module au démarrage. Il ajoute également un nouveau chemin (/ cool) qui l'utilise. Votre code final devrait ressembler à ceci:
const cool = require('cool-ascii-faces') const express = require('express') const path = require('path') const PORT = process.env.PORT || 5000 express() .use(express.static(path.join(__dirname, 'public'))) .set('views', path.join(__dirname, 'views')) .set('view engine', 'ejs') .get('/', (req, res) => res.render('pages/index')) .get('/cool', (req, res) => res.send(cool())) .listen(PORT, () => console.log(`Listening on ${ PORT }`))
Maintenant, essayez localement:
$ npm install $ heroku local
Visite de votre application à http://localhost:5000/cool, vous devriez voir de jolis visages dans chaque mise à jour: (⚆ _ ⚆). 🤗
Maintenant, déployez. Presque tous les déploiements sur Heroku suivent le même modèle. Tout d'abord, ajoutez les fichiers modifiés au référentiel git local:
$ git add .
Maintenant, validez les modifications dans le référentiel:
$ git commit -m "Add cool face API"
Maintenant, déployez, comme vous l'avez fait auparavant:
$ git push heroku master
Enfin, vérifiez que tout fonctionne:
$ heroku open cool
Vous devriez enfin voir un autre visage. 😉
Suppléments de provision
Les plugins sont des services cloud tiers qui fournissent des services supplémentaires prêts à l'emploi pour votre application, de la persistance à la journalisation, à la surveillance et bien plus encore.
Por defecto, Heroku almacena 1500 líneas de registros de tu aplicación. Sin embargo, hace que el flujo de registro completo esté disponible como un servicio, y varios proveedores adicionales han escrito servicios de registro que proporcionan cosas como la persistencia de registros, búsqueda y alertas por correo electrónico y SMS.
Dans cette étape, vous fournirez l'un de ces plugins d'enregistrement, appelé Papertrail.
Voici le code pour la mise à disposition du plugin pour l'enregistrement Papertrail:
$ heroku addons:create papertrail Adding papertrail on sharp-rain-871... done, v4 (free) Welcome to Papertrail. Questions and ideas are welcome ([email protected]). Happy logging! Use `heroku addons:docs papertrail` to view documentation.
Pour éviter les abus, la mise en service d'un plug-in nécessite une vérification du compte. Si votre compte n'a pas été vérifié, vous serez invité à visiter le site de vérification.
Le plugin est maintenant implémenté et configuré pour votre application. Vous pouvez créer une liste de plugins pour votre application comme ceci:
$ heroku addons
Para ver este complemento en acción, visita la URL de Heroku de tu aplicación unas cuantas veces. Cada visita generará más mensajes de registro, que ahora deberían ser enviados al complemento del Papertrail. Visita la consola del Papertrail para ver los mensajes de registro, este es el código:
$ heroku addons:open papertrail
Votre navigateur ouvrira une console Web Papertrail, affichant les derniers événements du journal. L'interface vous permet de rechercher et de configurer des alertes:

Démarrer une console
Pour avoir une idée réelle du fonctionnement des banques d'alimentation, vous pouvez créer une autre banque d'alimentation unique et exécuter la commande frapper
, qui ouvre une coquille sur cette banque d'alimentation.
Vous pouvez ensuite y exécuter des commandes. Chaque powerbank a son propre espace fichier éphémère, rempli avec son application et ses dépendances - une fois la commande terminée (dans ce cas, bash), le powerbank est supprimé.
$ heroku run bash Running 'bash' attached to terminal... up, run.3052 ~ $ ls Procfile README.md composer.json composer.lock vendor views web ~ $ exit exit
Si vous obtenez une erreur, Erreur de connexion au processus
, vous devrez peut-être configurer votre pare-feu.
N'oubliez pas d'écrire sortir
pour sortir de la coque et terminer la batterie externe.
Définir les variables de configuration
Heroku vous permet d'externaliser la configuration, en stockant des données telles que des clés de chiffrement ou des adresses de ressources externes dans des vars de configuration.
Au moment de l'exécution, les variables de configuration sont exposées en tant que variables d'environnement à l'application. Par exemple, modifiez index.js pour que vous entriez un nouveau chemin, / fois
, qui répète une action basée sur la valeur de la variable d'environnement FOIS
:
app.get('/times', (req, res) => { let result = '' const times = process.env.TIMES || 5 for (i = 0; i < times; i++) { result += i + ' ' } res.send(result) })
heroku local
configurará automáticamente el entorno basado en el Contenu à partir du fichier .env
dans votre répertoire local. Un fichier existe déjà dans le répertoire supérieur de votre projet .env
contenant le contenu suivant:
TIMES=2
Si vous exécutez l'application avec heroku local
, vous verrez que deux nombres sont générés à chaque fois.
Pour configurer la var de configuration sur Heroku, exécutez ce qui suit:
heroku config:set TIMES=2
Ensuite, vous verrez les vars de configuration qui sont configurés à l'aide de la configuration heroku:
$ heroku config == sharp-rain-871 Config Vars PAPERTRAIL_API_TOKEN: erdKhPeeeehIcdfY7ne TIMES: 2
Déployez votre application modifiée sur Heroku puis visitez-la en exécutant heroku heures d'ouverture
.
Créer la base de données
El mercado de complementos tiene una gran cantidad de almacenes de datos, desde los proveedores de Redis y MongoDB hasta Postgres y MySQL. En este paso, agregará una base de datos de desarrollo gratuita de Heroku Postgres Starter Tier a su aplicación.
Ajoutez la base de données:
$ heroku addons:create heroku-postgresql:hobby-dev Adding heroku-postgresql:hobby-dev... done, v3 (free)
Cela crée une base de données et définit une variable d'environnement DATABASE_URL (vous pouvez le vérifier en exécutant la commande configuration heroku).
Utilisez la commande npm pour installer le module pg à vos dépendances:
$ npm install pg + [email protected] added 14 packages in 2.108s
"dependencies": { "cool-ascii-faces": "^1.3.4", "ejs": "^2.5.6", "express": "^4.15.2", "pg": "^7.4.3" },
Maintenant, modifiez votre fichier index.js pour utiliser ce module pour vous connecter à la base de données spécifiée dans votre variable d'environnement DATABASE_URL. Ajoutez ceci près du haut:
const { Pool } = require('pg'); const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: true });
Maintenant, ajoutez un autre itinéraire, en ajoutant ce qui suit: / db juste après l'existant .obtenir ('/',…) comme indiqué dans l'exemple:
.get('/db', async (req, res) => { try { const client = await pool.connect() const result = await client.query('SELECT * FROM test_table'); const results = { 'results': (result) ? result.rows : null}; res.render('pages/db', results ); client.release(); } catch (err) { console.error(err); res.send("Error " + err); } })
Cela garantit que lorsque vous accédez à votre application en utilisant le chemin / db, il renverra toutes les lignes du tableau test_table.
Déployez ceci sur Heroku. Si vous accédez / db, vous recevrez un Erreur car il n'y a pas de table dans la base de données. En supposant que Postgres soit installé localement, utilisez la commande heroku pg: psql
Pour vous connecter à la base de données distante, créez une table et insérez une ligne:
$ heroku pg:psql psql (9.5.2, server 9.6.2) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. => create table test_table (id integer, name text); CREATE TABLE => insert into test_table values (1, 'hello database'); INSERT 0 1 => q
Félicitations pour avoir terminé cette leçon! 🏅🏆🥇