Comments (3)
I am encountering this same error when attempting to import keyboardjs
into some test code.
Here is a snippet to demonstrate what I mean:
import { JSDOM } from 'jsdom'
import assert from 'assert'
import keyboardjs from 'keyboardjs'
// create mocked window object
const window = new JSDOM().window
const document = window.document
// pass this to keyboardjs?
keyboardjs.watch(document)
It seems like keyboardjs
attempts to access the window object as it's loaded, and I am not sure how to prevent it from doing that.
from keyboardjs.
I was able to get this to work using dynamic imports.
You can use an import function, which returns a Promise for when the module is imported.
JSDOM can be imported first, and then used to create an embedded window object which we then add to the global scope.
Then, we can import keyboardjs using the same mechanism.
Here is roughly the code I ended up with:
// import JSDOM first
import('jsdom').then(async module => {
const window = new module.JSDOM().window
// now set the global window object to the JSDOM window
globalThis.window = window
// _now_ import keyboardjs
const keyboardjs = await import('keyboardjs')
const document = window.document
return { keyboardjs, document }
}).then(({ keyboardjs, document }) => {
// test code goes here, and can use keyboardjs and document
})
from keyboardjs.
Just a quick update there, I've updated the lib to support non browser environments removing the need to perform a work around. See commit 3ab58eb
from keyboardjs.
Related Issues (20)
- What is the desired behavior of preventRepeat? HOT 6
- For what reason might numeric keypad not work? HOT 3
- Sequence timing HOT 1
- HOW TO CREATE WITH A JAPANESE LOCALE? HOT 1
- Can't bind on a combo that includes a delimiter HOT 3
- Press key on electron HOT 2
- Binding arrows HOT 2
- Add watch targets to the current context rather than setting it globally
- Add integration tests for testing against common oses and browsers.
- Create a new website with proper documentation and demo HOT 1
- Releasing a binding when another activates HOT 1
- unbind keys from a specific context HOT 1
- [BUG] callback gets call incorrectly with incorrect key
- bind() with preventRepeatByDefault=true omits the first firing of pressHandler HOT 3
- ES6 is a breaking change HOT 2
- Secondary key symbols not firing event HOT 1
- Error TypeScript type HOT 3
- Bind characters with repetition
- Question: is it possible to unbind browser default shortcut like Command + W / Control + W HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from keyboardjs.