Node.js ialah persekitaran masa jalan JavaScript moden dan salah satu alat teras untuk banyak aplikasi. Antaranya, Buffer ialah jenis data penting dalam Node.js Ia digunakan untuk mengendalikan data binari dan merupakan salah satu asas untuk Node.js mengendalikan operasi I/O. Walau bagaimanapun, dalam Node.js, pelbagai ralat akan muncul dalam Penampan Bagaimana untuk menyelesaikan masalah ini?
Ralat ini bermakna parameter yang dihantar ke dalam fungsi mestilah rentetan atau jenis Buffer, tetapi parameter sebenar diluluskan dalam Parameter yang dimasukkan bukan. Ralat ini biasanya berlaku apabila beroperasi pada objek Penampan.
Penyelesaian:
Kod sampel:
let str = 'hello world'; let buffer = Buffer.from(str);
Sebab ralat ini ialah beberapa kaedah terbina dalam Node.js mempunyai keperluan untuk jenis data yang dihantar, tetapi jenis data yang dihantar tidak memenuhi keperluan.
Penyelesaian:
Kod sampel:
const fs = require('fs'); const path = require('path'); let filePath = path.resolve(__dirname, 'file.txt'); let data = 'hello world'; fs.writeFile(filePath, Buffer.from(data), (err) => { if(err) throw err; console.log('File has been saved.'); });
Sebab ralat ini ialah apabila mencipta TypedArray , Parameter yang dihantar melebihi panjang maksimum yang disokongnya.
Penyelesaian:
Kod sampel:
let data = new Uint8Array(10000000000); // 报错:RangeError: Invalid typed array length
const chunkSize = 5000000; let buffer = new Buffer(chunkSize); for(let i = 0; i < 10000000000; i += chunkSize){ let array = new Uint8Array(buffer); // ... }
Ralat ini biasanya berlaku apabila menggunakan TypedArray, kerana objek TypedArray mesti dikaitkan dengan contoh ArrayBuffer, jika ia digunakan tanpa perkaitan, ralat akan dilaporkan.
Penyelesaian:
Kod sampel:
const length = 10; let uint8 = new Uint8Array(length).buffer; // 此时 uint8 不是 TypedArray 对象 let uint8Typed = new Uint8Array(uint8); // 报错:TypeError: Cannot read property 'byteLength' of undefined const buffer = new ArrayBuffer(length); uint8Typed = new Uint8Array(buffer); // 关联 ArrayBuffer 实例后再使用
Ringkasan:
Melalui kes di atas, kami telah mengetahui tentang ralat dan penyelesaian Penampan biasa dalam Node.js. Dalam proses pembangunan sebenar, kita perlu menganalisis dan menyelesaikan mengikut situasi tertentu, mengikut prinsip keselamatan diutamakan dan kepraktisan terlebih dahulu. Pada masa yang sama, kami juga perlu memberi perhatian kepada nombor versi Node.js dan mengikut spesifikasi penggunaan API standard untuk mengelakkan ralat yang tidak perlu yang disebabkan oleh perubahan API.
Atas ialah kandungan terperinci Ralat penimbal dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!