• Node.js Video Tutorials

NodeJS v8.deserializer.readHeader() 方法



v8.deserializer 類的NodeJS v8.deserializer.readHeader() 方法用於讀取和驗證內部緩衝區中的頭部。

此方法還確保頭部包含有效的序列化格式版本。

如果頭部有效,此方法返回 true,否則丟擲錯誤。

語法

以下是NodeJS v8.deserializer.readHeader() 方法的語法:

v8.deserializer.readHeader()

引數

此方法不接受任何引數。

返回值

此方法讀取反序列化器中內部緩衝區的頭部並進行驗證,包括格式版本。如果頭部有效,則返回 true。否則丟擲錯誤。

示例

在下面的示例中,我們首先嚐試使用 v8.serializer.writeHeader() 方法將頭部寫入內部緩衝區。然後,我們嘗試使用 v8.deserializer.readHeader() 方法讀取和驗證頭部。

// Importing the v8 module
const v8 = require('v8');

// Defining the serializer object
const serializer = new v8.Serializer();

// Writing the headers to the internal buffer
serializer.writeHeader();

// Defining the deserializer object
const deserializer = new v8.Deserializer(serializer.releaseBuffer());

// Reading the headers from internal buffer
console.log(deserializer.readHeader());

// Printing the header values from internal buffer
console.log(serializer.releaseBuffer());

輸出

true
<Buffer >

示例

在此示例中,我們嘗試寫入一個 32 位無符號整數而不是頭部到內部緩衝區。因此,readHeader() 方法將丟擲錯誤。

// Importing the v8 module
const v8 = require('v8');

// Defining the serializer object
const serializer = new v8.Serializer();

// Writing a 32-bit unsigned integer to the internal buffer
serializer.writeUint32(7869);

// Defining the deserializer object
const deserializer = new v8.Deserializer(serializer.releaseBuffer());

// Reading the headers from internal buffer
console.log(deserializer.readHeader());

// Printing the header values from internal buffer
console.log(serializer.releaseBuffer());

錯誤

以下是上述程式碼的輸出:

/home/cg/root/63b66d48bc404/main.js:14
console.log(deserializer.readHeader());
                         ^

Error: Unable to deserialize cloned data due to invalid or unsupported version.
    at Object.<anonymous> (/home/cg/root/63b66d48bc404/main.js:14:26)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
    at startup (internal/bootstrap/node.js:238:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)
nodejs_v8_module.htm
廣告