Skip to content

Commit 2ffb64c

Browse files
bajtosRyanZim
authored andcommitted
Fix fs.promises ExperimentalWarning on Node 10.1.0 (#578)
1 parent 7d36349 commit 2ffb64c

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

lib/__tests__/promise.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
/* eslint-env mocha */
44

5+
const assert = require('assert')
6+
const fs = require('fs')
57
const fse = require('..')
68

79
const methods = [
@@ -22,4 +24,12 @@ describe('promise support', () => {
2224
fse[method]().catch(() => done())
2325
})
2426
})
27+
28+
if (Object.getOwnPropertyDescriptor(fs, 'promises')) {
29+
it('provides fse.promises API', () => {
30+
const desc = Object.getOwnPropertyDescriptor(fse, 'promises')
31+
assert.ok(desc)
32+
assert.equal(typeof desc.get, 'function')
33+
})
34+
}
2535
})

lib/fs/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ const api = [
4646

4747
// Export all keys:
4848
Object.keys(fs).forEach(key => {
49+
if (key === 'promises') {
50+
// fs.promises is a getter property that triggers ExperimentalWarning
51+
// Don't re-export it here, the getter is defined in "lib/index.js"
52+
return
53+
}
4954
exports[key] = fs[key]
5055
})
5156

lib/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,12 @@ module.exports = Object.assign(
1717
require('./path-exists'),
1818
require('./remove')
1919
)
20+
21+
// Export fs.promises as a getter property so that we don't trigger
22+
// ExperimentalWarning before fs.promises is actually accessed.
23+
const fs = require('fs')
24+
if (Object.getOwnPropertyDescriptor(fs, 'promises')) {
25+
Object.defineProperty(module.exports, 'promises', {
26+
get () { return fs.promises }
27+
})
28+
}

0 commit comments

Comments
 (0)