Pourquoi Deployer Express sur Railway ?
Deployer une application Express sur Railway peut offrir plusieurs avantages :
- Facilité d'accès : Les utilisateurs peuvent accéder à votre application depuis n'importe où avec un simple lien web.
- Évolutivité : Il s'agit d'une solution auto-échelonnante, ce qui signifie que le service se mettra automatiquement à l'échelle pour gérer une charge de travail accrue.
Par exemple, imaginez que vous développiez une application de gestion de projets pour votre entreprise. Vous voulez que tous les membres puissent accéder à cette application depuis n'importe où dans le monde. Deployer cette application sur Railway permettrait un accès facile et sécurisé.
Prerequis
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
- Connaissance de base d'Express.js
- Un compte sur Railway (gratuit avec une utilisation limitée)
- Node.js et npm installés (v14 ou plus tard)
Outils à installer (versions)
- Node.js v14.x
- npm v6.x
Concepts fondamentaux
1. Créer un nouveau projet Express
Schéma mental :
Un nouveau projet Express est composé d'un fichier app.js principal et d'autres fichiers comme index.js, package.json, etc.
// app.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
2. Installer Railway CLI
Pour déployer sur Railway, vous devez d'abord installer le CLI (Command Line Interface).
npm install -g @railway/cli
Mise en pratique : projet fil rouge
Créer un simple serveur Express
Étape 1 : Initialiser votre projet Node.js
mkdir my-express-app
cd my-express-app
npm init -y
Étape 2 : Installer Express
npm install express
Étape 3 : Créer le fichier app.js
Créez un fichier app.js avec le contenu suivant :
// app.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
Étape 4 : Lancer votre application local
node app.js
Allez sur http://localhost:3000 dans votre navigateur pour voir "Hello World!".
Créer une application de gestion des tâches
Étape 1 : Créer un fichier routes/tasks.js
Créez un fichier routes/tasks.js avec le contenu suivant :
// routes/tasks.js
const express = require('express');
const router = express.Router();
let tasks = [];
router.get('/tasks', (req, res) => {
res.json(tasks);
});
router.post('/tasks', (req, res) => {
const newTask = { id: Date.now(), text: req.body.text };
tasks.push(newTask);
res.status(201).json(newTask);
});
module.exports = router;
Étape 2 : Modifier app.js pour inclure les routes
Modifiez app.js pour inclure les routes de tâches :
// app.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
const taskRoutes = require('./routes/tasks');
app.use(express.json());
app.use('/api', taskRoutes);
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
Étape 3 : Tester l'API
Vous pouvez tester l'API en utilisant curl ou Postman :
## Créer une nouvelle tâche
curl -X POST http://localhost:3000/api/tasks -H "Content-Type: application/json" -d '{"text":"Acheter du lait"}'
## Obtenir toutes les tâches
curl http://localhost:3000/api/tasks
Erreurs frequentes et debugging
1. Erreur : PORT is not defined
Code incorrect :
// app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(process.env.PORT, () => {
console.log(`App listening at http://localhost:${process.env.PORT}`);
});
Code correct :
// app.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
2. Erreur : Cannot find module 'express'
Code incorrect :
npm install express
Code correct :
npm install express --save
3. Erreur : SyntaxError: Unexpected token import
Code incorrect :
// app.js
import express from 'express';
const app = express();
app.listen(3000, () => {
console.log('App listening at http://localhost:3000');
});
Code correct :
// app.js
const express = require('express');
const app = express();
app.listen(3000, () => {
console.log('App listening at http://localhost:3000');
});
Pour aller plus loin
1. Utiliser des environnements de développement et de production
Vous pouvez utiliser des variables d'environnement pour différencier les configurations entre le développement et la production.
## .env.development
PORT=3000
MONGODB_URI=mongodb://localhost:27017/myapp-dev
## .env.production
PORT=80
MONGODB_URI=mongodb://produser:prodpass@prodserver/myapp-prod
2. Utiliser des services de base de données
Railway offre des intégrations faciles avec des services de base de données comme MongoDB, PostgreSQL, etc.
3. Déployer sur plusieurs environnements (développement, staging, production)
Vous pouvez configurer Railway pour déployer votre application sur différents environnements en créant des branches distinctes dans votre dépôt Git.
Défi pratique
Développez une application simple de gestion de notes (notes à faire) avec les fonctionnalités suivantes :
- Création d'une nouvelle note
- Affichage de toutes les notes
- Suppression d'une note
N'oubliez pas de suivre les mêmes étapes que précédemment, en modifiant le code pour ajouter ces nouvelles fonctionnalités.
Ce tutoriel devrait vous aider à déployer une application Express sur Railway et à développer des applications plus complexes.