value.trim() in not function at types.js:40
See original GitHub issueDescribe 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
at https://github.com/krisk/Fuse/blob/a2d62fb6b1ad4cb71c485632df4670baf6f32a6a/src/helpers/types.js#L40
Error:
node_modules/fuse.js/dist/fuse.common.js:242
return !value.trim().length;
^
TypeError: value.trim is not a function
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 https://github.com/krisk/Fuse/commit/938db2aebb1a5b2d610cd8bb3258ff701baa46fb
🔬Minimal Reproduction
const Fuse = require('fuse.js')
const data = [{first: false}]
const options = {keys: [{name: 'first'}]}
const fuse = new Fuse(data, options)
fuse.search('a')
Additional context
else if
below is always true
https://github.com/krisk/Fuse/blob/90f153793432997654a2a006e0f01753cd23c9ff/src/helpers/get.js#L28
since line below returns an array with at least one item https://github.com/krisk/Fuse/blob/90f153793432997654a2a006e0f01753cd23c9ff/src/tools/KeyStore.js#L74
Which leads into another deepGet
with obj = false
which leads to if block below and pushing non-string/number value into list https://github.com/krisk/Fuse/blob/90f153793432997654a2a006e0f01753cd23c9ff/src/helpers/get.js#L9
Issue Analytics
- State:
- Created 3 years ago
- Comments:6
Top GitHub Comments
I’m having this problem when the lib try read a instance of Date… someone knows how to fix?
Hi @krisk , I just upgraded to 6.4.1 and seem to encounter this error.
My items look like;
My options look like;
value
is included in the keys list because sometimes in our data,value
is a string, other times it’s an object.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?