Rumah > hujung hadapan web > tutorial js > Ralat Biasa dalam Node.js dan Cara Membaikinya

Ralat Biasa dalam Node.js dan Cara Membaikinya

DDD
Lepaskan: 2025-01-09 18:26:49
asal
495 orang telah melayarinya

Common Errors in Node.js and How to Fix Them

Ralat Biasa dalam Node.js dan Cara Membaikinya

Node.js, yang diraikan kerana persekitaran masa jalannya yang sangat berskala, menyediakan pembangun rangka kerja yang teguh untuk membina aplikasi sisi pelayan yang cekap dan berprestasi tinggi. Namun begitu, seni bina yang didorong peristiwa yang tidak menyekat memperkenalkan cabaran unik yang memerlukan pemahaman yang canggih dan penyelesaian yang sistematik.

Jadual Kandungan

  1. Ralat Sintaks
  2. Ralat Rujukan
  3. Ralat Taip
  4. Ralat Modul Tidak Ditemui
  5. Kebocoran Memori Pemancar Peristiwa
  6. Penolakan Janji Tidak Terkendali
  7. Isu Pengaturcaraan Tak Segerak
  8. Ralat: Tidak Dapat Menemui Modul
  9. Ralat Rangkaian
  10. Isu Prestasi

Ralat Sintaks

Definisi

Ralat sintaks timbul daripada penyelewengan dalam peraturan struktur JavaScript, seperti pendakap tidak seimbang, tanda baca yang salah atau penyalahgunaan kata kunci. Ralat ini menghalang jurubahasa daripada melaksanakan kod.

Contoh

function helloWorld() {
    console.log("Hello, World!";
}
Salin selepas log masuk
Salin selepas log masuk

Coretan kod ini menunjukkan ketidakpadanan antara kurungan dan kurungan kerinting.

Resolusi

✅ Ralat sintaks penyahpepijatan melibatkan menyemak mesej ralat yang disediakan oleh jurubahasa, menentukan lokasi isu dan menyelesaikannya. Kod yang diperbetulkan adalah seperti berikut:

function helloWorld() {
    console.log("Hello, World!");
}
Salin selepas log masuk
Salin selepas log masuk

Ralat Rujukan

Definisi

Ralat rujukan berlaku apabila pembolehubah yang tidak diisytiharkan atau di luar skop diakses. Ralat ini biasanya timbul daripada pengawasan pengaturcaraan atau salah urus skop.

Contoh

console.log(myVar);
Salin selepas log masuk
Salin selepas log masuk

Dalam keadaan ini, myVar dirujuk tanpa pengisytiharan terlebih dahulu, yang membawa kepada ralat.

Resolusi

✅Pastikan pembolehubah diisytiharkan dengan sewajarnya dalam skop yang dimaksudkan sebelum digunakan:

let myVar = "Hello";
console.log(myVar);
Salin selepas log masuk
Salin selepas log masuk

Ralat Taip

Definisi

Ralat jenis berlaku apabila operasi dilakukan pada jenis data yang tidak menyokongnya. Ralat ini sering mendedahkan kelemahan logik dalam atur cara.

Contoh

let num = 5;
num.toUpperCase();
Salin selepas log masuk
Salin selepas log masuk

Nombor tidak mempunyai kaedah toUpperCase, mengakibatkan ralat jenis.

Resolusi

✅ Selaraskan operasi dengan jenis data yang serasi:

let str = "hello";
console.log(str.toUpperCase());
Salin selepas log masuk
Salin selepas log masuk

Modul Tidak Ditemui Ralat

Definisi

Ralat Modul Tidak Ditemui berlaku apabila Node.js gagal mencari modul yang dinyatakan dalam penyataan memerlukan atau import. Isu ini selalunya berpunca daripada laluan yang salah atau kebergantungan yang hilang.

Contoh

const express = require('express');
Salin selepas log masuk
Salin selepas log masuk

Jika ekspres tidak dipasang, jurubahasa akan membuat ralat.

Resolusi

✅ Gunakan pengurus pakej Node.js untuk memasang modul yang hilang:

function helloWorld() {
    console.log("Hello, World!";
}
Salin selepas log masuk
Salin selepas log masuk

Selain itu, sahkan laluan modul dan kewujudannya dalam projek.


Kebocoran Memori EventEmitter

Definisi

Kelas EventEmitter dalam Node.js memudahkan pengaturcaraan dipacu peristiwa dengan membenarkan objek memancarkan peristiwa dan mengendalikan pendengar. Kebocoran memori berlaku apabila pendengar yang berlebihan dilampirkan pada tika EventEmitter tanpa pengurusan yang betul, yang membawa kepada keletihan sumber.

Masalahnya

Setiap kali pendengar didaftarkan menggunakan .on() atau .addListener(), rujukan dikekalkan, yang boleh terkumpul selama-lamanya. Node.js mengeluarkan amaran jika bilangan pendengar melebihi ambang lalai 10:

function helloWorld() {
    console.log("Hello, World!");
}
Salin selepas log masuk
Salin selepas log masuk

Contoh

console.log(myVar);
Salin selepas log masuk
Salin selepas log masuk

Resolusi

✅ Tingkatkan had pendengar:

let myVar = "Hello";
console.log(myVar);
Salin selepas log masuk
Salin selepas log masuk

✅ Alih keluar pendengar apabila mereka tidak diperlukan lagi:

let num = 5;
num.toUpperCase();
Salin selepas log masuk
Salin selepas log masuk

✅ Untuk pendengar sekali sahaja, gunakan .once():

let str = "hello";
console.log(str.toUpperCase());
Salin selepas log masuk
Salin selepas log masuk

Penolakan Janji Tidak Terurus

Definisi

Penolakan janji yang tidak dikendalikan berlaku apabila janji ditolak tanpa pengendali .catch() yang sepadan. Peninggalan ini boleh menjejaskan kestabilan aplikasi, terutamanya dalam persekitaran pengeluaran.

Contoh

const express = require('express');
Salin selepas log masuk
Salin selepas log masuk

Resolusi

✅ Lampirkan pengendali .catch() pada semua janji:

npm install express
Salin selepas log masuk

✅ Gunakan percubaan...tangkap blok dengan async/tunggu:

(MaxListenersExceededWarning: Possible EventEmitter memory leak detected.)
Salin selepas log masuk

✅ Sediakan pengendali ralat global:

const EventEmitter = require('events');
const emitter = new EventEmitter();

for (let i = 0; i < 20; i++) {
    emitter.on('data', () => console.log('data event'));
}
Salin selepas log masuk

Ralat Rangkaian

Definisi

Ralat rangkaian timbul daripada interaksi yang gagal antara aplikasi dan perkhidmatan luaran. Isu ini termasuk tamat masa sambungan, ralat DNS dan permintaan HTTP yang salah.

Contoh

emitter.setMaxListeners(50);
Salin selepas log masuk

Resolusi

✅ Menggabungkan pengendalian ralat:

emitter.off('data', listener);
Salin selepas log masuk

✅ Alamat tamat masa dengan jelas:

emitter.once('data', () => console.log('data event'));
Salin selepas log masuk

✅ Sahkan URL input:

Promise.reject("Error");
Salin selepas log masuk

Isu Prestasi

Definisi

Kemerosotan prestasi dalam Node.js selalunya timbul daripada operasi menyekat, pertanyaan suboptimum dan penggunaan sumber yang berlebihan, menjejaskan masa tindak balas dan kebolehskalaan.

Contoh

Promise.reject("Error").catch(err => console.error(err));
Salin selepas log masuk

Resolusi

✅ Sukakan operasi tak segerak:

async function fetchData() {
    try {
        const data = await someAsyncOperation();
        console.log(data);
    } catch (err) {
        console.error("Error fetching data:", err);
    }
}
Salin selepas log masuk

✅ Laksanakan caching dengan alatan seperti Redis:

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

✅ Pantau prestasi menggunakan alatan seperti clinic.js dan pm2.


Kesimpulan

Node.js, walaupun berkuasa, memerlukan pengendalian ralat yang teliti untuk memastikan kebolehpercayaan dan prestasi. Menangani ketidakkonsistenan sintaks, janji tidak terurus dan kegagalan rangkaian melalui amalan terbaik memupuk aplikasi yang teguh dan berskala. Melalui penyahpepijatan dan pengoptimuman yang disengajakan, pembangun boleh memanfaatkan potensi penuh Node.js untuk membina sistem yang canggih.

Atas ialah kandungan terperinci Ralat Biasa dalam Node.js dan Cara Membaikinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan