kgf3JfUtW
kgf3JfUtW

Reputation: 14926

Why does console.log on a WeakSet give <items unknown> in node.js?

Why does console.log display WeakSet as “<items unknown>“?

[13:37:11] [~] node
Welcome to Node.js v14.4.0.
Type ".help" for more information.
> let student1 = { name: 'James', age: 26 };
undefined
> let student2 = { name: 'Julia', age: 27 };
undefined
> const roster = new WeakSet([student1, student2]);
undefined
> console.log(roster);
WeakSet { <items unknown> }
undefined

Context: I came across below example on WeakSet in ES6.

let student1 = { name: 'James', age: 26 };
let student2 = { name: 'Julia', age: 27 };
const roster = new WeakSet([student1, student2]);
console.log(roster);

The example suggests it should print

WeakSet {Object {name: 'Julia', age: 27}, Object {name: 'Richard', age: 31}}

But in node v14.4.0 it prints

WeakSet { <items unknown> }

Upvotes: 3

Views: 1087

Answers (1)

Hexception
Hexception

Reputation: 922

The node-js team decided that its hard to correctly implement that. Here is the issue: https://github.com/nodejs/node/issues/19001

So that mean that WeakSet work correctly BUT console.log will always output an empty WeakSet

If you still wanna inspect the WeakMap you can do that by using utils inspect:

const { inspect } = require('util');
let student1 = { name: 'James', age: 26 };
let student2 = { name: 'Julia', age: 27 };
const weakSet = new WeakSet([student1, student2]);
console.log(inspect(weakSet, { showHidden: true }));

Upvotes: 2

Related Questions