-
Notifications
You must be signed in to change notification settings - Fork 27k
fix(compiler): avoid conflicts between HMR code and local symbols #61550
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Currently we construct the HMR replacement URL inline by calling into the native `URL` constructor. This can cause conflicts with user code that defines a symbol called `URL`. These changes resolve the issue by moving the URL construction into a separate function. This has a secondary benefit of making the generated code easier to follow and allowing us to update the URL without changing the compiled code. Fixes angular#61517.
| expect(jsContents).toContain('function Cmp_HmrLoad(t) {'); | ||
| expect(jsContents).toContain( | ||
| 'import(/* @vite-ignore */\nnew URL("./@ng/component?c=" + id + "&t=" + encodeURIComponent(t), import.meta.url).href)', | ||
| 'import(/* @vite-ignore */\ni0.ɵɵgetReplaceMetadataURL(id, t, import.meta.url)', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could've fixed the bug by changing this to new globalThis.URL as well, but I feel like the dedicated function gives us more flexibility anyways.
…1550) Currently we construct the HMR replacement URL inline by calling into the native `URL` constructor. This can cause conflicts with user code that defines a symbol called `URL`. These changes resolve the issue by moving the URL construction into a separate function. This has a secondary benefit of making the generated code easier to follow and allowing us to update the URL without changing the compiled code. Fixes #61517. PR Close #61550
|
This PR was merged into the repository by commit 46af023. The changes were merged into the following branches: main, 19.2.x, 20.0.x |
…1550) Currently we construct the HMR replacement URL inline by calling into the native `URL` constructor. This can cause conflicts with user code that defines a symbol called `URL`. These changes resolve the issue by moving the URL construction into a separate function. This has a secondary benefit of making the generated code easier to follow and allowing us to update the URL without changing the compiled code. Fixes #61517. PR Close #61550
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
Currently we construct the HMR replacement URL inline by calling into the native
URLconstructor. This can cause conflicts with user code that defines a symbol calledURL.These changes resolve the issue by moving the URL construction into a separate function. This has a secondary benefit of making the generated code easier to follow and allowing us to update the URL without changing the compiled code.
Fixes #61517.