fix(pnp): esm - handle parentURL without a file: protocol#5362
Merged
merceyz merged 7 commits intoyarnpkg:masterfrom May 17, 2023
lizthegrey:lizf.fix-esm-loader-chaining
Merged
fix(pnp): esm - handle parentURL without a file: protocol#5362merceyz merged 7 commits intoyarnpkg:masterfrom lizthegrey:lizf.fix-esm-loader-chaining
parentURL without a file: protocol#5362merceyz merged 7 commits intoyarnpkg:masterfrom
lizthegrey:lizf.fix-esm-loader-chaining
Conversation
Contributor
Author
|
I have no idea how to write tests for this, please feel free to suggest. |
Contributor
Author
|
Proof that hotpatching works: https://github.com/eve-val/eve-roster/blob/main/patches/pnp-loader.patch when loaded as a postinstall causes startup to work and ESM hotpatching to succeed, rather than the above error. |
8 tasks
merceyz
approved these changes
May 17, 2023
Member
merceyz
left a comment
There was a problem hiding this comment.
LGTM, I've added a test and updated the versions 👍.
parentURL without a file: protocol
merceyz
added a commit
that referenced
this pull request
May 23, 2023
**What's the problem this PR addresses?** When chaining Yarn PNP ESM loader with [import-in-the-middle](https://github.com/DataDog/import-in-the-middle) loader, INVALID_URL_SCHEME is thrown because `fileURLToPath()` is run on a parent URL of `node:util?iitm=true` generated by the IITM loader. ``` 2023-03-30T21:40:58.280Z 3364766 U TypeError [ERR_INVALID_URL_SCHEME]: The URL must be of scheme file 2023-03-30T21:40:58.280Z 3364766 U at new NodeError (node:internal/errors:399:5) 2023-03-30T21:40:58.280Z 3364766 U at fileURLToPath (node:internal/url:1212:11) 2023-03-30T21:40:58.280Z 3364766 U at resolve$1 (file:///home/lizf/eve-roster/.pnp.loader.mjs:1993:77) 2023-03-30T21:40:58.280Z 3364766 U at nextResolve (node:internal/modules/esm/hooks:654:28) 2023-03-30T21:40:58.280Z 3364766 U at Hooks.resolve (node:internal/modules/esm/hooks:309:30) 2023-03-30T21:40:58.280Z 3364766 U at ESMLoader.resolve (node:internal/modules/esm/loader:312:26) 2023-03-30T21:40:58.280Z 3364766 U at ESMLoader.getModuleJob (node:internal/modules/esm/loader:172:38) 2023-03-30T21:40:58.281Z 3364766 U at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:40) 2023-03-30T21:40:58.281Z 3364766 U at link (node:internal/modules/esm/module_job:75:36) { 2023-03-30T21:40:58.281Z 3364766 U code: 'ERR_INVALID_URL_SCHEME' 2023-03-30T21:40:58.281Z 3364766 U } 2023-03-30T21:40:58.281Z 3364766 U 2023-03-30T21:40:58.281Z 3364766 U Node.js v19.8.1 ``` **How did you fix it?** Ensure fileURLToPath() is only run on file URLs by explicitly checking the URL protocol; if it is not `file`, then default to CWD. **Checklist** - [x] I have read the [Contributing Guide](https://yarnpkg.com/advanced/contributing). - [x] I have set the packages that need to be released for my changes to be effective. - [x] I will check that all automated PR checks pass before the PR gets reviewed. --------- Co-authored-by: merceyz <[email protected]>
3 tasks
arcanis
pushed a commit
that referenced
this pull request
Jun 1, 2023
**What's the problem this PR addresses?** The test added in #5362 doesn't run on Node.js v17. Fixes https://github.com/yarnpkg/berry/actions/runs/5060283241/jobs/9083017466 **How did you fix it?** Updated the range to match Node.js versions containing nodejs/node#42881 **Checklist** - [x] I have read the [Contributing Guide](https://yarnpkg.com/advanced/contributing). - [x] I have set the packages that need to be released for my changes to be effective. - [x] I will check that all automated PR checks pass before the PR gets reviewed.
merceyz
added a commit
that referenced
this pull request
Jun 1, 2023
**What's the problem this PR addresses?** The test added in #5362 doesn't run on Node.js v17. Fixes https://github.com/yarnpkg/berry/actions/runs/5060283241/jobs/9083017466 **How did you fix it?** Updated the range to match Node.js versions containing nodejs/node#42881 **Checklist** - [x] I have read the [Contributing Guide](https://yarnpkg.com/advanced/contributing). - [x] I have set the packages that need to be released for my changes to be effective. - [x] I will check that all automated PR checks pass before the PR gets reviewed.
arcanis
pushed a commit
to yarnpkg/example-repo-zipn
that referenced
this pull request
Jul 3, 2023
**What's the problem this PR addresses?** The test added in yarnpkg/berry#5362 doesn't run on Node.js v17. Fixes https://github.com/yarnpkg/berry/actions/runs/5060283241/jobs/9083017466 **How did you fix it?** Updated the range to match Node.js versions containing nodejs/node#42881 **Checklist** - [x] I have read the [Contributing Guide](https://yarnpkg.com/advanced/contributing). - [x] I have set the packages that need to be released for my changes to be effective. - [x] I will check that all automated PR checks pass before the PR gets reviewed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's the problem this PR addresses?
When chaining Yarn PNP ESM loader with import-in-the-middle loader, INVALID_URL_SCHEME is thrown because
fileURLToPath()is run on a parent URL ofnode:util?iitm=truegenerated by the IITM loader.How did you fix it?
Ensure fileURLToPath() is only run on file URLs by explicitly checking the URL protocol; if it is not
file, then default to CWD.Checklist