Skip to content
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

Nextjs window is not defined error #63

Open
Felipe-martins1 opened this issue Jun 22, 2021 · 7 comments
Open

Nextjs window is not defined error #63

Felipe-martins1 opened this issue Jun 22, 2021 · 7 comments

Comments

@Felipe-martins1
Copy link

Hi!

i'm recently working on the nextjs project and i started using immortalDB, but i'm getting the error "window not defined", even before using any of the functions (get, set, delete), when i import immortalDB the error starts to show up, how can i fix this? thanks!

Good job, ImmortalDB is awesome!😄

@gruns
Copy link
Owner

gruns commented Jun 22, 2021

  1. is this with the latest ImmortalDB v1.1.0?

  2. please provide minimal code to reproduce the error so i can see exactly what you see

these window checks may not suffice https://github.com/gruns/ImmortalDB/blob/master/src/index.js#L23, but i cant tell without an example where i can attempt to reproduce your error(s)

alternatively, can you test and open a pull request that fixes this? ideally the fix is simple, like the above WINDOW_IS_DEFINED variable

thank you! 🙌

@Felipe-martins1
Copy link
Author

Hey!
Yes, is the latest version.
basicaly, to reproduce the error, you should create a nextjs project and install ImmortalDB, after this, when you import ImmortalDB, the error comes up.

I'll try to solve this and make a pull request, thanks!

@martinschayna
Copy link

The same in my project, when I've installed the immortal-db package and put import { ImmortalDB } from "immortal-db" somewhere in the source code (even the import is not in use), then mocha tests running in nodejs are failing on this error.

@martinschayna
Copy link

mocha tests running in nodejs are failing on this error.

It is failing on this line:
https://github.com/gruns/ImmortalDB/blob/master/dist/immortal-db.js#L10

Obviously, the bundle was not bundled for node target. Is it possible to distribute bundle for node target too? Maybe via multiple targets defined in webpack config, see:
https://webpack.js.org/concepts/targets/#multiple-targets

@gruns
Copy link
Owner

gruns commented Sep 3, 2021

ya. we'll likely have to build two targets, a la

but @Felipe-martins1 and @martinschayna as we walk down this path together, help me understand: how/why is immortaldb being imported and used in node? for example, as part of the build process? or do you actually run immortaldb in node with browser shims?

perhaps there's another solution here before we build two targets: one for node and one for the browser

@martinschayna
Copy link

how/why is immortaldb being imported and used in node?

The reason in my case is unit testing in mocha, which is running in node. Some low level parts of my web application uses immortal-db for caching, mainly for outstandingly simple interface and very usable configuration. These parts are used from the web app, so I want to test them carefully. Other people may use immortal-db on server side, which is also running in node.

@gruns
Copy link
Owner

gruns commented Sep 10, 2021

The reason in my case is unit testing in mocha, which is running in node.

makes sense. thank you for sharing!

from my limited knowledge of webpack, and going off of

it looks like two different build versions would be necessary

that said, zooming out, building for node really doesnt make much sense as all the storage engines that immortaldb uses don't exist in node, ie:

  • cookies
  • indexeddb
  • localstorage

so while a version of immortaldb can certainly be built for node -- one that doesn't use the global window variable, immortaldb wouldnt actually do anything as none of the storage engines exist in node without polyfills

this would, in turn, render all immortaldb usage no-ops in node

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

No branches or pull requests

3 participants