Skip to content

Commit 32ba854

Browse files
committed
Make native non-enumerable
Making it non-enumerable means less spurious "Cannot find module" errors in your logs when iterating over `pg` objects. `Object.defineProperty` has been available since Node 0.12. See brianc#1894 (comment)
1 parent fde5ec5 commit 32ba854

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

lib/index.js

+18-13
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,25 @@ if (typeof process.env.NODE_PG_FORCE_NATIVE !== 'undefined') {
4040
module.exports = new PG(Client)
4141

4242
// lazy require native module...the native module may not have installed
43-
module.exports.__defineGetter__('native', function () {
44-
delete module.exports.native
45-
var native = null
46-
try {
47-
native = new PG(require('./native'))
48-
} catch (err) {
49-
if (err.code !== 'MODULE_NOT_FOUND') {
50-
throw err
43+
var native
44+
Object.defineProperty(module.exports, 'native', {
45+
enumerable: false,
46+
get () {
47+
if (native) {
48+
return native
5149
}
52-
/* eslint-disable no-console */
53-
console.error(err.message)
54-
/* eslint-enable no-console */
50+
51+
try {
52+
native = new PG(require('./native'))
53+
} catch (err) {
54+
if (err.code !== 'MODULE_NOT_FOUND') {
55+
throw err
56+
}
57+
/* eslint-disable no-console */
58+
console.error(err.message)
59+
/* eslint-enable no-console */
60+
}
61+
return native
5562
}
56-
module.exports.native = native
57-
return native
5863
})
5964
}

0 commit comments

Comments
 (0)