diff --git a/.pnp.loader.mjs b/.pnp.loader.mjs index 3f4e477ef177..4396389356a7 100644 --- a/.pnp.loader.mjs +++ b/.pnp.loader.mjs @@ -2012,10 +2012,17 @@ async function resolve$1(originalSpecifier, context, nextResolve) { } } } - const result = pnpapi.resolveRequest(specifier, issuer, { - conditions: new Set(conditions), - extensions: allowLegacyResolve ? void 0 : [] - }); + let result; + try { + result = pnpapi.resolveRequest(specifier, issuer, { + conditions: new Set(conditions), + extensions: allowLegacyResolve ? void 0 : [] + }); + } catch (err) { + if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`) + err.code = `ERR_MODULE_NOT_FOUND`; + throw err; + } if (!result) throw new Error(`Resolving '${specifier}' from '${issuer}' failed`); const resultURL = pathToFileURL(result); diff --git a/.yarn/versions/cac399bc.yml b/.yarn/versions/cac399bc.yml new file mode 100644 index 000000000000..22e76f05f959 --- /dev/null +++ b/.yarn/versions/cac399bc.yml @@ -0,0 +1,27 @@ +releases: + "@yarnpkg/cli": patch + "@yarnpkg/plugin-pnp": patch + "@yarnpkg/pnp": patch + +declined: + - "@yarnpkg/plugin-compat" + - "@yarnpkg/plugin-constraints" + - "@yarnpkg/plugin-dlx" + - "@yarnpkg/plugin-essentials" + - "@yarnpkg/plugin-init" + - "@yarnpkg/plugin-interactive-tools" + - "@yarnpkg/plugin-nm" + - "@yarnpkg/plugin-npm-cli" + - "@yarnpkg/plugin-pack" + - "@yarnpkg/plugin-patch" + - "@yarnpkg/plugin-pnpm" + - "@yarnpkg/plugin-stage" + - "@yarnpkg/plugin-typescript" + - "@yarnpkg/plugin-version" + - "@yarnpkg/plugin-workspace-tools" + - "@yarnpkg/builder" + - "@yarnpkg/core" + - "@yarnpkg/doctor" + - "@yarnpkg/nm" + - "@yarnpkg/pnpify" + - "@yarnpkg/sdks" diff --git a/packages/acceptance-tests/pkg-tests-specs/sources/pnp-esm.test.ts b/packages/acceptance-tests/pkg-tests-specs/sources/pnp-esm.test.ts index 425930261dc8..3a0e608cb05c 100644 --- a/packages/acceptance-tests/pkg-tests-specs/sources/pnp-esm.test.ts +++ b/packages/acceptance-tests/pkg-tests-specs/sources/pnp-esm.test.ts @@ -654,6 +654,81 @@ describe(`Plug'n'Play - ESM`, () => { ), ); + test( + `it should throw ERR_MODULE_NOT_FOUND when statically importing a nonexistent file`, + makeTemporaryEnv( + { + type: `module`, + }, + async ({path, run, source}) => { + await expect(run(`install`)).resolves.toMatchObject({code: 0}); + + await xfs.writeFilePromise(ppath.join(path, `index.js`), ` + import("./foo.js").catch((err) => { + console.log(err.code) + }) + `); + + await xfs.writeFilePromise(ppath.join(path, `foo.js`), `import './nonexistent.js'`); + + await expect(run(`node`, `index.js`)).resolves.toMatchObject({ + code: 0, + stdout: `ERR_MODULE_NOT_FOUND\n`, + }); + }, + ), + ); + + test( + `it should throw ERR_MODULE_NOT_FOUND when dynamically importing a nonexistent file`, + makeTemporaryEnv( + { + type: `module`, + }, + async ({path, run, source}) => { + await expect(run(`install`)).resolves.toMatchObject({code: 0}); + + await xfs.writeFilePromise(ppath.join(path, `index.js`), ` + import("./nonexistent.js").catch((err) => { + console.log(err.code) + }) + `); + + await expect(run(`node`, `index.js`)).resolves.toMatchObject({ + code: 0, + stdout: `ERR_MODULE_NOT_FOUND\n`, + }); + }, + ), + ); + + test( + `it should throw ERR_PACKAGE_PATH_NOT_EXPORTED when subpath isn't exported`, + makeTemporaryEnv( + { + name: `foo`, + type: `module`, + exports: { + './package.json': `./package.json`, + }, + }, + async ({path, run, source}) => { + await expect(run(`install`)).resolves.toMatchObject({code: 0}); + + await xfs.writeFilePromise(ppath.join(path, `index.mjs`), ` + import('foo/bar').catch(err => { + console.log(err.code) + }); + `); + + await expect(run(`node`, `./index.mjs`)).resolves.toMatchObject({ + code: 0, + stdout: `ERR_PACKAGE_PATH_NOT_EXPORTED\n`, + }); + }, + ), + ); + // Tests /packages/yarnpkg-pnp/sources/esm-loader/fspatch.ts test( `it should support named exports in commonjs files`, diff --git a/packages/yarnpkg-pnp/sources/esm-loader/built-loader.js b/packages/yarnpkg-pnp/sources/esm-loader/built-loader.js index c6b3e561f843..ce090c45f3c4 100644 --- a/packages/yarnpkg-pnp/sources/esm-loader/built-loader.js +++ b/packages/yarnpkg-pnp/sources/esm-loader/built-loader.js @@ -2,7 +2,7 @@ let hook; module.exports = () => { if (typeof hook === `undefined`) - hook = require('zlib').brotliDecompressSync(Buffer.from('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', 'base64')).toString(); + hook = require('zlib').brotliDecompressSync(Buffer.from('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', 'base64')).toString(); return hook; }; diff --git a/packages/yarnpkg-pnp/sources/esm-loader/hooks/resolve.ts b/packages/yarnpkg-pnp/sources/esm-loader/hooks/resolve.ts index 58ec52d713f3..dbedd27f8814 100644 --- a/packages/yarnpkg-pnp/sources/esm-loader/hooks/resolve.ts +++ b/packages/yarnpkg-pnp/sources/esm-loader/hooks/resolve.ts @@ -100,11 +100,19 @@ export async function resolve( } } - const result = pnpapi.resolveRequest(specifier, issuer, { - conditions: new Set(conditions), - // TODO: Handle --experimental-specifier-resolution=node - extensions: allowLegacyResolve ? undefined : [], - }); + let result; + try { + result = pnpapi.resolveRequest(specifier, issuer, { + conditions: new Set(conditions), + // TODO: Handle --experimental-specifier-resolution=node + extensions: allowLegacyResolve ? undefined : [], + }); + } catch (err) { + if (err instanceof Error && `code` in err && err.code === `MODULE_NOT_FOUND`) + err.code = `ERR_MODULE_NOT_FOUND`; + + throw err; + } if (!result) throw new Error(`Resolving '${specifier}' from '${issuer}' failed`);