Fix Node.js crash when calling browser-only functions (imshow, VideoCapture) #111
+219
−21
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.
cv.imshow()andcv.VideoCapture()crash in Node.js/tsx withReferenceError: document is not defined, causing infinite error loops. These functions access DOM APIs without environment checks.Changes
opencv.js patches
typeof document === "undefined"guards toModule["imshow"]andModule["VideoCapture"]Automation & maintenance
scripts/apply-opencv-patch.js: Automated patch application with error message constantsdist/opencv.js.patch: Patch documentation for rebuild scenariosTesting & docs
test/nodejs-compatibility.test.ts: Validates error handling in Node.js environmentError message improvement
Before: Infinite ReferenceError crashes
After: Clear, actionable error
All other OpenCV operations (Mat, image processing, computer vision algorithms) continue working in both environments. Backward compatible - browser usage unchanged.
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.