Skip to content

Commit 86c55af

Browse files
ljharbruyadorno
authored andcommitted
[fix] node v10.0 lacks fs.promises
In this node version, fall back to `util.promisify` of the callback version. Maybe fixes npm/cli#2623. Maybe fixes npm/cli#2652. Maybe fixes npm/cli#2625. PR-URL: #21 Credit: @ljharb Close: #21 Reviewed-by: @ruyadorno
1 parent 2a59d9b commit 86c55af

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
build:
77
strategy:
88
matrix:
9-
node-version: [10.x, 12.x, 14.x]
9+
node-version: ['10.0', 10.x, '12.0', 12.x, '14.0', 14.x]
1010
platform:
1111
- os: ubuntu-latest
1212
shell: bash

lib/is-server-package.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
const { stat } = require('fs').promises
1+
const util = require('util')
2+
const fs = require('fs')
3+
const { stat } = fs.promises || { stat: util.promisify(fs.stat) }
24
const { resolve } = require('path')
35
module.exports = async path => {
46
try {

test/is-server-package.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const t = require('tap')
2+
const requireInject = require('require-inject')
23
const isServerPackage = require('../lib/is-server-package.js')
34

45
t.test('returns true if server.js present', async t => {
@@ -19,3 +20,7 @@ t.test('returns false if server.js not a file', async t => {
1920
})
2021
t.equal(await isServerPackage(path), false)
2122
})
23+
24+
t.test('works without fs.promises', async t => {
25+
t.doesNotThrow(() => requireInject('../lib/is-server-package', { fs: { ...require('fs'), promises: null }}))
26+
})

0 commit comments

Comments
 (0)