Blogger Jateng

Debugging dan Penanganan Kesalahan di Express.js

Express.js adalah kerangka kerja aplikasi web yang cepat dan fleksibel untuk Node.js. Ini adalah kerangka kerja yang sangat kuat dan fleksibel yang juga sangat mudah digunakan. Tetapi dengan fitur-fitur yang kuat seperti itu, muncul tantangan, terutama dalam kutukan setiap pengembang: debugging/penanganan kesalahan. Pengalaman pengguna yang lancar tidak hanya melibatkan debugging yang efektif tetapi juga penanganan kesalahan yang baik. Artikel ini membahas praktik terbaik debugging dan penanganan kesalahan di Express.js.

Penjelasan Debugging Ekspres js

Debugging adalah proses menemukan dan menyelesaikan bug atau masalah dalam aplikasi Anda. Dalam Express. js debugging dapat disederhanakan dengan cara mengimplementasikan:

sumber: betterprogramming.pub

1. Menggunakan Modul Debug

Express.js  Untuk menggunakannya, cukup instal modul:

npm install debug

Anda kemudian dapat mengonfigurasi debug untuk setiap bagian dari aplikasi Anda dengan menentukan ruang nama:

const debug = require('debug')('app');

debug('This is a debug message');

Untuk mengizinkan daftar debug, sesuaikan ruang nama saat memulai aplikasi Anda dengan mengatur variabel lingkungan DEBUG:

DEBUG=app node app.js

2. Pencatatan Konsol

Menggunakan console. log() atau console. Menempatkan pernyataan error() adalah metode debugging yang cepat dan kotor, tetapi efektif. Meskipun metode ini bekerja dengan baik selama pengembangan, lebih baik menggunakan pustaka logging terstruktur seperti Winston atau Bunyan untuk logging produksi.

3. Inspektur Node.js

Node. Express juga dapat di-debug menggunakan inspektur bawaan yang disertakan dengan aplikasi node.js. Sekarang, jalankan aplikasi Anda dengan flag --inspect:

node --inspect app.js

Anda kemudian dapat menghubungkan debugger Node.js ke Chrome DevTools atau IDE lain yang kompatibel untuk melakukan debug langkah demi langkah.

4. Debugging Middleware

Masalah umumnya terjadi pada middleware. Menambahkan log tertentu atau membungkus middleware dengan fungsi pembungkus Debug dapat membantu menangkap alurnya. Selain itu, Anda dapat memisahkan logika middleware menjadi modul dan fungsi yang lebih kecil yang mudah di-debug.

Penanganan Kesalahan di Express.js

Ini adalah bagian penting dari setiap aplikasi web. Express.jscardjs menyediakan manajemen kesalahan Tspring yang kuat dan menyeluruh dalam manajemen kesalahan rtspring. Berikut adalah beberapa praktik utama untuk penanganan kesalahan:

1. Middleware penanganan kesalahan terpusat

Dengan Express.js, Anda dapat membuat middleware penanganan kesalahan terpusat yang menangkap kesalahan dan memastikan format respons standar. Middleware harus menerima empat argumen: (err, req, res, next).

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(err.status || 500).json({
        error: {
            message: err.message || 'Internal Server Error',
        },
    });
});

Ini menjamin bahwa kesalahan dicatat setiap kali dan kesalahan dikembalikan dalam format yang konsisten. 

2. Membedakan Antara Kesalahan Klien dan Server

Jika terjadi kesalahan, gunakan kode status HTTP untuk memberi tahu pengguna apakah itu masalah pada klien (misalnya, mereka memasukkan URL yang salah) atau pada server (misalnya, kesalahan koneksi basis data). Sebagai contoh:
  • 400: Permintaan Buruk
  • 401: Tidak sah
  • 403: Dilarang
  • 404: Tidak Ditemukan
  • 500: Kesalahan Server Internal
app.get('/some-route', (req, res, next) => {
    const error = new Error('Not Found');
    error.status = 404;
    next(error);
});

3. Menangani Pengecualian yang Tidak Tertangkap

proses - Menangani kesalahan tak terduga seperti yang terjadi di luar siklus permintaan-respons. pada:

process.on('uncaughtException', (err) => {
    console.error('Uncaught Exception:', err);
    process.exit(1); // Exit the process after handling
});

Demikian juga, tangkap penolakan janji yang tidak tertangani:

process.on('unhandledRejection', (reason, promise) => {
    console.error('Unhandled Rejection:', reason);
});

4. Menggunakan Pustaka Pihak Ketiga

Beberapa pustaka, seperti express-async-errors, membantu mengurangi beberapa pekerjaan dalam mengelola kesalahan yang dilemparkan dalam kode asinkron:

npm install express-async-errors

Setelah menggunakan basis kode ini, Anda tidak perlu lagi membungkus fungsi asinkronisasi di dalam blok try-catch secara manual.

5. Mencatat Kesalahan

Log kesalahan berfungsi sebagai kitab suci untuk pemecahan masalah dan merupakan monitor terbaik yang bisa Anda dapatkan. Instal sebuah library logging seperti WinstonLog untuk mencatat kesalahan dengan informasi yang rinci:

const winston = require('winston');
const logger = winston.createLogger({
    level: 'error',
    transports: [
        new winston.transports.Console(),
        new winston.transports.File({ filename: 'error.log' }),
    ],
});

app.use((err, req, res, next) => {
    logger.error(err.message);
    res.status(500).send('Something went wrong!');
});

Kesimpulan

Debugging dan penanganan kesalahan berjalan seiring dengan siklus pengembangan di Express.js. Anda juga dapat menyesuaikan logika penanganan kesalahan berdasarkan kebutuhan aplikasi Anda. Menerapkan praktik terbaik ini akan membantu pengembang meningkatkan keandalan dan pengalaman pengguna aplikasi Express.js mereka.