Skip to content

Fix duplicate p5.js init by checking window.p5 and skipping if alread… #7791

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

Open
wants to merge 1 commit into
base: dev-2.0
Choose a base branch
from

Conversation

VANSH3104
Copy link
Contributor

…y loaded

Resolves #7687

Changes:

  • Add check for window.p5 instanceof p5 before global binding
  • Skip initialization and warn if p5.js was already loaded
  • Avoids errors from Object.defineProperty redefinition
  • Fixes issue where multiple p5.js imports cause failures

Screenshots of the change:

PR Checklist

Sorry, something went wrong.

Copy link
Member

@limzykenneth limzykenneth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The recommendation is to just check whether window.p5 is already defined or not. It doesn't matter whether that p5 variable comes from previously loaded p5.js or not as there's no easy way to check it.

Comment on lines +128 to +131
if (window.p5 instanceof p5) {
console.warn('p5.js appears to have been imported multiple times. This could cause errors.');
return;
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

window.p5 is the constructor so it won't be an instance of p5, this condition will always be false.

this._isGlobal = true;
window.p5 = this;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overwriting window.p5 here will break a lot of things, it shouldn't be redefined.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants