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

Error: Cannot find namespace 'sift'. #215

Open
rmanibus opened this issue Aug 23, 2023 · 12 comments
Open

Error: Cannot find namespace 'sift'. #215

rmanibus opened this issue Aug 23, 2023 · 12 comments

Comments

@rmanibus
Copy link
Contributor

Steps to reproduce

Add this library to a typescript angular project
And configure feathers with rx:

import { feathers} from '@feathersjs/feathers';
import { rx } from 'feathers-reactive';
       feathers().
      .configure(
        rx({
          idField: '_id',
        })

Expected behavior

Tell us what should happen
feathers is configured properly

Actual behavior

Error: ../node_modules/feathers-reactive/dist/index.d.ts:76:61 - error TS2503: Cannot find namespace 'sift'.

76     var sift: <TItem, TSchema extends TItem = TItem>(query: sift.Query<TSchema>, options?: Partial<sift_lib_core.Options>) => (item: unknown, key?: sift_lib_utils.Key, owner?: any) => boolean;

System configuration

Tell us about the applicable parts of your setup.

Module versions (especially the part that's not working):

NodeJS version:
v18.17.0

Operating System:

Browser Version:

React Native Version:

Module Loader:

@rmanibus rmanibus changed the title Error: find namespace 'sift'. Error: Cannot find namespace 'sift'. Aug 23, 2023
@bitflower
Copy link
Collaborator

Hi @rmanibus

thanks for posting this.

May I ask for a repro repo? I doubt there will be the time to set this up and also to reduce the risk of using some other setup then you.

Thanks!
Matthias

@rmanibus
Copy link
Contributor Author

rmanibus commented Aug 23, 2023

sure:
https://github.com/rmanibus/feathers-reactive_reproducer_215

just run
npm install
then
npm start

@pit999
Copy link

pit999 commented Oct 27, 2023

I get the same error while compiling the module.
I have to add
import * as sift from 'sift';
This solves the problem.

@serghienco
Copy link

serghienco commented Oct 31, 2024

i have same error, is there a solution ? import * as sift from 'sift'; did not help

@pit999
Copy link

pit999 commented Nov 5, 2024

i have same error, is there a solution ? import * as sift from 'sift'; did not help

In which file do you add the import statement?

@serghienco
Copy link

i have same error, is there a solution ? import * as sift from 'sift'; did not help

In which file do you add the import statement?

in the same file where rx is imported

import * as sift from 'sift';
import { rx } from 'feathers-reactive';

@pit999
Copy link

pit999 commented Nov 8, 2024

You have to add the line in file node_module\feathers-reactive\dist\index.d.ts
import { Application, FeathersService, Id, NullableId, Paginated, Params, Service } from '@feathersjs/feathers';
import { Observable, OperatorFunction } from 'rxjs';
import * as sift from 'sift';
import * as sift_lib_core from 'sift/lib/core';
import * as sift_lib_utils from 'sift/lib/utils';

@serghienco
Copy link

You have to add the line in file node_module\feathers-reactive\dist\index.d.ts import { Application, FeathersService, Id, NullableId, Paginated, Params, Service } from '@feathersjs/feathers'; import { Observable, OperatorFunction } from 'rxjs'; import * as sift from 'sift'; import * as sift_lib_core from 'sift/lib/core'; import * as sift_lib_utils from 'sift/lib/utils';

Thank you for the help! node_module* directory is created by npm install , developers should not change anything there, how do you do this change ? is possible to deploy to production this type of change ?

@serghienco
Copy link

serghienco commented Nov 8, 2024

You have to add the line in file node_module\feathers-reactive\dist\index.d.ts import { Application, FeathersService, Id, NullableId, Paginated, Params, Service } from '@feathersjs/feathers'; import { Observable, OperatorFunction } from 'rxjs'; import * as sift from 'sift'; import * as sift_lib_core from 'sift/lib/core'; import * as sift_lib_utils from 'sift/lib/utils';

Thank you for the help! node_module* directory is created by npm install , developers should not change anything there, how do you do this change ? is possible to deploy to production this type of change ?

I was able to create postinstall script which always patch feathers-reactive library after install:
"scripts": {
"postinstall": "node ./scripts/patch-feathers-reactive.js"
}

patch-feathers-reactive.js reads content of .\node_module\feathers-reactive\dist\index.d.ts and add in the begginig "import * as sift from 'sift';" only if missing

Thank you @pit999 for the help!

@pit999
Copy link

pit999 commented Nov 10, 2024

I freezed the version in package.json of feathers-reactive (no changes since one year).
Best solution would be to add this statement in the code by daffl :-)

@daffl
Copy link
Member

daffl commented Nov 10, 2024

This is an open source project. A pull request with the fixes can be made by anybody.

@pit999
Copy link

pit999 commented Nov 11, 2024

Ok, I thought if I create an issue the issue will be solved :-)
I never created a pull request, but I'm willing to learn this.
But I checked the code and I'm not able to identify the .ts file where I have to add the import statement so that the line will be added to the feathers-reactive\dist\index.d.ts file :-o.

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

5 participants