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 2 commits 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

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.

src/core/main.js Outdated
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.

src/core/main.js Outdated
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.

@VANSH3104 VANSH3104 force-pushed the VANSH3104/Duplicate branch from 52bd064 to 717784f Compare May 27, 2025 05:23
@VANSH3104
Copy link
Contributor Author

Hi @limzykenneth,Sorry for the late response—I’ve been busy with my semester exams. I made some changes to the code based on the previous discussion. Could you please take a look at it?

@limzykenneth
Copy link
Member

Now that I think about it, I'm not sure the idea I had would work as in this case p5 would just detect itself as having already been defined as window.p5 making initialization impossible. @VANSH3104 Have you tested the code here to see if it works?

@VANSH3104
Copy link
Contributor Author

@limzykenneth Yes, I did test the code, but unfortunately didn’t get the desired result. I think your concern about p5 being already attached to window.p5 and causing initialization issues might actually be what's happening here. I’m still experimenting to better understand the behavior

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.

2 participants