JS error when press "s" or "w" key - Cannot read properties of undefined (reading 'indexOf')
Thanks for reporting this, @heminei. Great question about JS error when press "s" or "w" key - Cannot read properties of undefined (reading 'indexOf'). The recommended approach with Canvas is to use the event-driven API. Start here: Check the GrapesJS documentation for your specific module Look for the on() event list...
Read full answer below βQuestion
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome Version 94.0.4606.81 (Official Build) (64-bit)
Reproducible demo link
Describe the bug
How to reproduce the bug?
- Select body element
- Press "s" or "w" key
What is the expected behavior? Should not throw an error in the console
What is the current behavior? Throws error in console:
ComponentNext.js?87ea:8 Uncaught TypeError: Cannot read properties of undefined (reading 'indexOf')
at eval (ComponentNext.js?87ea:8)
at Array.forEach (<anonymous>)
at child.run (ComponentNext.js?87ea:6)
at child.callRun (CommandAbstract.js?8031:90)
at Object.runCommand (index.js?e807:388)
at Object.eval [as method] (index.js?30cb:157)
at dispatch (keymaster.js?a202:143)
at HTMLDocument.eval (keymaster.js?a202:330)
at HTMLDocument.eval (FrameView.js?2616:441)
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (1)
Thanks for reporting this, @heminei.
Great question about JS error when press "s" or "w" key - Cannot read properties of undefined (reading 'indexOf'). The recommended approach with Canvas is to use the event-driven API.
Start here:
- Check the GrapesJS documentation for your specific module
- Look for the
on()event listener method - Most operations can be achieved by listening to editor and component events
Common patterns:
// Listen for changes
editor.on('change', () => console.log('something changed'));
// Component lifecycle
editor.on('component:mount', (c) => console.log('component ready', c));
editor.on('component:update', (c) => console.log('component updated', c));
If you're still stuck:
- Share a minimal CodeSandbox reproduction
- Include what you've already tried
- Mention your GrapesJS version
- The community is here to help!
Related Questions and Answers
Continue research with similar issue discussions.
Issue #6705
TypeError: Cannot read properties of undefined (reading 'toLowerCase') in keyboard handler
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? All browsers (Chrome, Safari, Firefox, Edg...
Issue #5378
Uncaught TypeError: Cannot read properties of undefined (reading 'Canvas') while dragging a component in Layer Manager Panel
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v116.0.5845.97 Reproducible demo li...
Issue #4323
Performance issue while dragging component to canvas when you have 2k component on canvas
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? Google Chrome Version 101.0.4951.41 (Officia...
Issue #6707
Cannot read properties of null (reading 'hasFocus') in Canvas module
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome (versions 142-144), Safari (version...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Check the open-source GrapesJS plugins on GitHub or run a quick search in our free catalog.
Browse free plugins βPremium plugins ship with support, regular updates, and production-ready features β save days of integration work.
Browse premium plugins βRelated tutorials
In-depth guides on the same topic.
Tutorial
Find the Right GrapesJS Plugin in Seconds: Smarter Discovery Is Live
We're shipping a set of discovery upgrades. New label filters, a proper compatibility switch for GrapesJS vs Studio, one-click and a smarter sort bar.
Tutorial
GJS Market 2.0 - Donations, Tracking, Labels and Better Product Discovery
Weβve rolled out a new set of GrapesJS marketplace updates across GJS Market, focused on improving how creators distribute products
Tutorial
Preset DevFuture 2.0 β New Update Released
Preset continues evolving as a clean, production-ready starting point for building visual editors powered by GrapesJS
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.