From d487addb1ae69064267efc58536186229c73ea41 Mon Sep 17 00:00:00 2001 From: Vincent Weevers Date: Sat, 13 Nov 2021 17:35:18 +0100 Subject: [PATCH] [Fix] use `file://` URLs for dynamic `import()` This is required on Windows if the argument passed to `import()` is an absolute path. Without it `tape test.js` fails if test.js is ESM. Covered by existing tests: `node test/import.js` fails without this. See https://github.com/nodejs/node/commit/a0846326dd42bf4ec2f91df9cade762283567511 --- bin/import-or-require.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/import-or-require.js b/bin/import-or-require.js index e2aa6b45..99ce1b26 100644 --- a/bin/import-or-require.js +++ b/bin/import-or-require.js @@ -1,6 +1,7 @@ 'use strict'; const { extname: extnamePath } = require('path'); +const { pathToFileURL } = require('url'); const getPackageType = require('get-package-type'); // eslint-disable-next-line consistent-return @@ -8,7 +9,7 @@ module.exports = function importOrRequire(file) { const ext = extnamePath(file); if (ext === '.mjs' || (ext === '.js' && getPackageType.sync(file) === 'module')) { - return import(file); + return import(pathToFileURL(file).href); } require(file); };