-
-
Notifications
You must be signed in to change notification settings - Fork 772
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
value.trim() in not function at types.js:40 #469
Comments
Hi @krisk , I just upgraded to 6.4.1 and seem to encounter this error. My items look like;
My options look like;
Downgrading to < 6.3.0 does fix the issue for now. Is my usage a supported use-case or do I need to refactor my code? |
I'm having this problem when the lib try read a instance of Date... someone knows how to fix? |
We can probably get a treatment. When receiving an object, do a JSON.stringify () |
This (jest) test throws the error: import Fuse from 'fuse.js';
import { Books } from './fixtures/Books';
describe('Fuse.js functions as expected', () => {
const fuse = new Fuse(Books, {
includeScore: true,
keys: ['author', 'tags']
});
it('finds the correct assets', () => {
const results = fuse.search('tion');
console.log({ results });
});
}) where export const Books = [
{
title: "Old Man's War",
author: 'John Scalzi',
tags: ['fiction']
},
{
title: 'The Lock Artist',
author: 'Steve',
tags: ['thriller']
}
]; The full stack trace is: [FAIL] src/utils/fuse.spec.ts
● Test suite failed to run
TypeError: value.trim is not a function
3 |
4 | describe('Fuse.js functions as expected', () => {
> 5 | const fuse = new Fuse(Books, {
| ^
6 | includeScore: true,
7 | keys: ['author', 'tags']
8 | });
at isBlank (node_modules/fuse.js/dist/fuse.common.js:249:17)
at node_modules/fuse.js/dist/fuse.common.js:648:21
at Array.forEach (<anonymous>)
at FuseIndex._addObject (node_modules/fuse.js/dist/fuse.common.js:604:17)
at node_modules/fuse.js/dist/fuse.common.js:542:18
at Array.forEach (<anonymous>)
at FuseIndex.create (node_modules/fuse.js/dist/fuse.common.js:541:19)
at createIndex (node_modules/fuse.js/dist/fuse.common.js:680:11)
at Fuse.setCollection (node_modules/fuse.js/dist/fuse.common.js:1909:32)
at new Fuse (node_modules/fuse.js/dist/fuse.common.js:1897:10)
at packages/project/src/utils/fuse.spec.ts:5:16
at Object.<anonymous> (packages/project/src/utils/fuse.spec.ts:4:1)
at runMicrotasks (<anonymous>)
at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)
at runJest (node_modules/@jest/core/build/runJest.js:387:19) |
I am getting the same error using a custom react app with the ESM build. However no issues using CodeSandbox with the exact same code. |
We are also seeing this same issue, but with Date objects. Currently we are reverting back to 6.2.1 to avoid the issue. It looks like this commit fixed an issue with booleans but Dates weren't covered by the fix. |
Describe the bug
A clear and concise description of what the bug is.Non-number/string value is allowed through helper/get.js causes runtime error
value.trim() is not a function
atFuse/src/helpers/types.js
Line 40 in a2d62fb
Error:
Version
The Fuse.js version where this bug is happening.6.3.0 and above
Is this a regression?
Yes, the previous version in which this bug was not present was: ...Yes, version below 6.3.0
Bug seem to have been introduced by 938db2a
🔬Minimal Reproduction
Additional context
else if
below is always trueFuse/src/helpers/get.js
Line 28 in 90f1537
since line below returns an array with at least one item
Fuse/src/tools/KeyStore.js
Line 74 in 90f1537
Which leads into another
deepGet
withobj = false
which leads to if block below and pushing non-string/number value into listFuse/src/helpers/get.js
Line 9 in 90f1537
The text was updated successfully, but these errors were encountered: