diff --git a/src/syntax.ts b/src/syntax.ts index 5a15b33..99269c4 100644 --- a/src/syntax.ts +++ b/src/syntax.ts @@ -77,7 +77,7 @@ export async function isValidNodeImport (id: string, _opts: ValidNodeImportOptio const pkg = await readPackageJSON(resolvedPath).catch(() => null) if (pkg?.type === 'module') { return true } - if (resolvedPath.match(/\.(\w+-)?esm?(-\w+)?\.js$/)) { + if (resolvedPath.match(/\.(\w+-)?esm?(-\w+)?\.js$|\/(esm?)\//)) { return false } diff --git a/test/fixture/imports/js-esm/es/index.js b/test/fixture/imports/js-esm/es/index.js new file mode 100644 index 0000000..c2627e7 --- /dev/null +++ b/test/fixture/imports/js-esm/es/index.js @@ -0,0 +1,2 @@ +// @ts-ignore +console.log(await Promise.resolve('foo')) diff --git a/test/fixture/imports/js-esm/es/index.mjs b/test/fixture/imports/js-esm/es/index.mjs new file mode 100644 index 0000000..c2627e7 --- /dev/null +++ b/test/fixture/imports/js-esm/es/index.mjs @@ -0,0 +1,2 @@ +// @ts-ignore +console.log(await Promise.resolve('foo')) diff --git a/test/syntax.test.ts b/test/syntax.test.ts index a7da182..b4934a9 100644 --- a/test/syntax.test.ts +++ b/test/syntax.test.ts @@ -55,7 +55,9 @@ const nodeImportTests = { [join(import.meta.url, '../fixture/imports/esm')]: true, [join(import.meta.url, '../fixture/imports/esm-module')]: true, [join(import.meta.url, '../fixture/imports/js-cjs')]: true, - [join(import.meta.url, '../fixture/imports/js-esm')]: false + [join(import.meta.url, '../fixture/imports/js-esm')]: false, + [join(import.meta.url, '../fixture/imports/js-esm/es/index.mjs')]: true, + [join(import.meta.url, '../fixture/imports/js-esm/es/index.js')]: false } describe('isValidNodeImport', () => { @@ -63,7 +65,10 @@ describe('isValidNodeImport', () => { it(input, async () => { try { expect(await isValidNodeImport(input)).to.equal(result) - } catch (e) { + } catch (err) { + if (result !== 'error') { + throw err + } expect(result).to.equal('error') } })