-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Description
Try this code (simulate index.js loaders)
test.js
var obj = {};
Object.defineProperties(obj, {
'util': {
get: function() {
console.log('wrapper called');
return obj.util = require('util');
}
},
});
obj.util.isArray([]);
obj.util.isArray("");node test.js
Output:
wrapper called
wrapper called
I think this is behavior that was not suspected.
Moreover:
node --use-strict test.js
Output:
wrapper called
TypeError: Cannot set property util of #<Object> which has only a getter
at Object.defineProperties.util.get (test.js:8:23)
at Object.<anonymous> (test.js:13:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
Well working code snippet:
test.js
var obj = {};
Object.defineProperties(obj, {
'util': {
get: function() {
console.log('wrapper called');
delete obj.util;
return obj.util = require('util');
},
configurable: true
},
});
obj.util.isArray([]);
obj.util.isArray("");Run the test:
node --use-strict test.js
Output:
wrapper called
Metadata
Metadata
Assignees
Labels
No labels