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
Anwendungsabhängigkeiten deklarieren
Heroku erkennt eine Anwendung wie Node.js an der Existenz einer aufgerufenen Datei package.json beim Wurzelverzeichnis.
Für Ihre eigenen Anwendungen können Sie eine erstellen, indem Sie den folgenden Befehl ausführen: npm init --yes
.
Die von Ihnen bereitgestellte Demoanwendung verfügt bereits über eine package.jsonund es sieht so aus:
{ "name": "node-js-getting-started", "version": "0.3.0", ... "engines": { "node": "8.11.1" }, "dependencies": { "ejs": "^2.5.6", "express": "^4.15.2" }, ... }
Die Datei package.json bestimmt sowohl die Version von Node.js Dies wird verwendet, um Ihre Anwendung auf Heroku auszuführen, z. B. die Abhängigkeiten, die mit Ihrer Anwendung installiert werden müssen.
Wenn eine Anwendung bereitgestellt wird, liest Heroku diese Datei und installiert die entsprechende Knotenversion zusammen mit den Abhängigkeiten mithilfe des Befehls npm installieren
.
Führen Sie diesen Befehl in Ihrem lokalen Verzeichnis aus, um die Abhängigkeiten zu installieren. Dieser Befehl wird an Ihr System gesendet, um die Anwendung lokal auszuführen:
$ npm install added 132 packages in 3.368s
Sobald die Abhängigkeiten installiert sind, können Sie Ihre Anwendung lokal ausführen.
Lokale Ausführung der Anwendung
Jetzt müssen Sie Ihre Anwendung lokal mit dem folgenden Befehl starten lokales Heroku
, das als Teil der Heroku-CLI installiert wurde:
$ 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
Wie Heroku, lokales Heroku
Untersuchen Sie die Procfile, um festzustellen, was ausgeführt werden soll.
Dann öffnen Sie die Adresse http://localhost:5000 in Ihnen Browser Netz de preferencia. Deberías ver tu aplicación ejecutándose de forma local.
Wenn Sie verhindern möchten, dass die Anwendung lokal ausgeführt wird, drücken Sie in der CLI Strg + C.
ausgehen.
Nehmen Sie lokale Änderungen vor
In diesem Schritt lernen Sie leicht, wie Sie eine lokale Änderung über Heroku an Ihre Anwendung weitergeben. Als Beispiel ändern Sie die Anwendung, um eine zusätzliche Abhängigkeit hinzuzufügen, und den Code, um sie zu verwenden.
Beginnen Sie mit dem Hinzufügen einer Abhängigkeit für coole ASCII-Gesichter
beim package.json
. Führen Sie dazu den folgenden Befehl aus:
$ npm install cool-ascii-faces + [email protected] added 9 packages in 2.027s
Sie müssen ändern Index.js Damit benötigen Sie dieses Modul beim Start. Außerdem wird ein neuer Pfad (/ cool) hinzugefügt, der ihn verwendet. Ihr endgültiger Code sollte folgendermaßen aussehen:
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 }`))
Versuchen Sie es jetzt vor Ort:
$ npm install $ heroku local
Besuchen Sie Ihre Bewerbung unter http://localhost:5000/coolsollten Sie in jedem Update hübsche Gesichter sehen: (⚆ _ ⚆). 🤗
Jetzt bereitstellen. Fast alle Bereitstellungen auf Heroku folgen demselben Muster. Fügen Sie zunächst die geänderten Dateien zum lokalen Git-Repository hinzu:
$ git add .
Übertragen Sie nun die Änderungen in das Repository:
$ git commit -m "Add cool face API"
Stellen Sie jetzt wie zuvor bereit:
$ git push heroku master
Überprüfen Sie abschließend, ob alles funktioniert:
$ heroku open cool
Du solltest endlich ein anderes Gesicht sehen. 😉
Proviantzusätze
Add-Ons sind Cloud-Dienste von Drittanbietern, die zusätzliche sofort einsatzbereite Dienste für Ihre Anwendung bereitstellen, von der Persistenz über die Protokollierung, Überwachung bis hin zu vielem mehr.
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.
In diesem Schritt stellen Sie eines dieser Registrierungs-Plugins bereit, Papertrail.
Dies ist der Code für die Bereitstellung des Plugins für die Papertrail-Registrierung:
$ 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.
Um Missbrauch zu verhindern, muss für die Bereitstellung eines Plugins eine Kontobestätigung durchgeführt werden. Wenn Ihr Konto nicht verifiziert wurde, werden Sie aufgefordert, die Verifizierungssite zu besuchen.
Jetzt ist das Plugin für Ihre Anwendung implementiert und konfiguriert. Sie können eine Liste von Plugins für Ihre Anwendung wie folgt erstellen:
$ 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
Ihr Browser öffnet eine Papertrail-Webkonsole, in der die neuesten Protokollereignisse angezeigt werden. Über die Benutzeroberfläche können Sie Warnungen suchen und konfigurieren:

Konsole starten
Um eine echte Vorstellung davon zu bekommen, wie Powerbanks funktionieren, können Sie eine weitere eindeutige Powerbank erstellen und den Befehl ausführen Bash
, die eine Hülle auf dieser Power Bank öffnet.
Dort können Sie dann Befehle ausführen. Jede Powerbank verfügt über einen eigenen kurzlebigen Dateibereich, der mit ihrer Anwendung und ihren Abhängigkeiten gefüllt ist. Sobald der Befehl ausgeführt wurde (in diesem Fall Bash), wird die Powerbank entfernt.
$ heroku run bash Running 'bash' attached to terminal... up, run.3052 ~ $ ls Procfile README.md composer.json composer.lock vendor views web ~ $ exit exit
Wenn Sie eine Fehlermeldung erhalten, Fehler beim Verbinden mit dem Prozess
Möglicherweise müssen Sie Ihre Firewall konfigurieren.
Vergiss nicht zu schreiben Ausfahrt
um aus der Hülle herauszukommen und die Energiebank zu beenden.
Definieren Sie Konfigurationsvariablen
Mit Heroku können Sie die Konfiguration auslagern und Daten wie Verschlüsselungsschlüssel oder externe Ressourcenadressen in Konfigurationsvariablen speichern.
Zur Laufzeit werden Konfigurationsvariablen als Umgebungsvariablen für die Anwendung verfügbar gemacht. Zum Beispiel ändern index.js damit Sie einen neuen Pfad eingeben, / mal
, die eine Aktion basierend auf dem Wert der Umgebungsvariablen wiederholt MAL
:
app.get('/times', (req, res) => { let result = '' const times = process.env.TIMES || 5 for (i = 0; i < times; i++) { result += i + ' ' } res.send(result) })
lokales Heroku
configurará automáticamente el entorno basado en el Inhalt aus der Datei .env
in Ihrem lokalen Verzeichnis. Im obersten Verzeichnis Ihres Projekts ist bereits eine Datei vorhanden .env
mit folgenden Inhalten:
TIMES=2
Wenn Sie die Anwendung mit ausführen lokales Heroku
Sie werden sehen, dass jedes Mal zwei Zahlen generiert werden.
Führen Sie Folgendes aus, um die Konfigurationsvariable auf Heroku zu konfigurieren:
heroku config:set TIMES=2
Dann sehen Sie die Konfigurationsvariablen, die mit heroku config konfiguriert wurden:
$ heroku config == sharp-rain-871 Config Vars PAPERTRAIL_API_TOKEN: erdKhPeeeehIcdfY7ne TIMES: 2
Stellen Sie Ihre geänderte Anwendung auf Heroku bereit und besuchen Sie sie, indem Sie sie ausführen Heroku offene Zeiten
.
Datenbank erstellen
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.
Fügen Sie die Datenbank hinzu:
$ heroku addons:create heroku-postgresql:hobby-dev Adding heroku-postgresql:hobby-dev... done, v3 (free)
Dadurch wird eine Datenbank erstellt und eine Umgebungsvariable DATABASE_URL festgelegt (Sie können dies überprüfen, indem Sie den Befehl ausführen Heroku-Konfiguration).
Verwenden Sie den Befehl npm um das Modul zu installieren pg zu Ihren Abhängigkeiten:
$ 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" },
Bearbeiten Sie nun Ihre Datei index.js Verwenden Sie dieses Modul, um eine Verbindung zu der in Ihrer Umgebungsvariablen angegebenen Datenbank herzustellen DATABASE_URL. Fügen Sie dies oben hinzu:
const { Pool } = require('pg'); const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: true });
Fügen Sie nun eine weitere Route hinzu und fügen Sie Folgendes hinzu: / db kurz nach dem Bestehenden .erhalten ('/',…) wie im Beispiel gezeigt:
.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); } })
Dies stellt sicher, dass beim Zugriff auf Ihre Anwendung über den Pfad / dbwerden alle Zeilen in der Tabelle zurückgegeben test_table.
Stellen Sie dies auf Heroku bereit. Wenn Sie zugreifen / dberhalten Sie eine Error da es keine Tabelle in der Datenbank gibt. Angenommen, Sie haben Postgres lokal installiert, verwenden Sie den Befehl heroku pg: psql
Um eine Verbindung zur entfernten Datenbank herzustellen, erstellen Sie eine Tabelle und fügen Sie eine Zeile ein:
$ 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
Herzlichen Glückwunsch zum Abschluss dieser Lektion! 🏅🏆🥇