Skip to content

Circular dependencies / require cycle #961

@isaachinman

Description

@isaachinman

Describe the bug

Surprised this has not been reported yet. I've used Orama previously with Vite as a bundler without issues.

I'm now setting up an Expo web/native project, and see these warnings:

 WARN  Require cycle: ../../../node_modules/@orama/orama/dist/esm/errors.js -> ../../../node_modules/@orama/orama/dist/esm/utils.js -> ../../../node_modules/@orama/orama/dist/esm/errors.js

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: ../../../node_modules/@orama/orama/dist/esm/methods/search.js -> ../../../node_modules/@orama/orama/dist/esm/methods/search-fulltext.js -> ../../../node_modules/@orama/orama/dist/esm/methods/search.js

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: ../../../node_modules/@orama/orama/dist/esm/methods/search.js -> ../../../node_modules/@orama/orama/dist/esm/methods/search-hybrid.js -> ../../../node_modules/@orama/orama/dist/esm/methods/search.js

These are not benign, it actually resulted in a fetchDocuments is not a function runtime error when calling the search function.

At the moment, the only workaround I can think of would be for users to bundle the entirety of the Orama source into a single file via esbuild or similar.

To Reproduce

  1. npx create-expo-app@latest test
  2. cd test && npm i @orama/orama
  3. npm run ios

Expected behavior

No require cycles – shared dependencies should be extracted to a third file to break the circularity.

Environment Info

N/A

Affected areas

Search

Additional context

Edit: Seems as though this is not the first time: #181

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions