Reputation: 11205
I am trying to import js-search
npm module in a vue component. But whenever I do this:
import JsSearch from 'js-search'
Above when logged console.log(JsSearch)
give undefined.
I further investigated that npm module
Its package.json
shows "main": "dist/commonjs/index.js"
The file looks like this:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _index = require('./IndexStrategy/index');
Object.defineProperty(exports, 'AllSubstringsIndexStrategy', {
enumerable: true,
get: function get() {
return _index.AllSubstringsIndexStrategy;
}
});
Object.defineProperty(exports, 'ExactWordIndexStrategy', {
enumerable: true,
get: function get() {
return _index.ExactWordIndexStrategy;
}
});
Object.defineProperty(exports, 'PrefixIndexStrategy', {
enumerable: true,
get: function get() {
return _index.PrefixIndexStrategy;
}
});
var _index2 = require('./Sanitizer/index');
Object.defineProperty(exports, 'CaseSensitiveSanitizer', {
enumerable: true,
get: function get() {
return _index2.CaseSensitiveSanitizer;
}
});
Object.defineProperty(exports, 'LowerCaseSanitizer', {
enumerable: true,
get: function get() {
return _index2.LowerCaseSanitizer;
}
});
var _index3 = require('./SearchIndex/index');
Object.defineProperty(exports, 'TfIdfSearchIndex', {
enumerable: true,
get: function get() {
return _index3.TfIdfSearchIndex;
}
});
Object.defineProperty(exports, 'UnorderedSearchIndex', {
enumerable: true,
get: function get() {
return _index3.UnorderedSearchIndex;
}
});
var _index4 = require('./Tokenizer/index');
Object.defineProperty(exports, 'SimpleTokenizer', {
enumerable: true,
get: function get() {
return _index4.SimpleTokenizer;
}
});
Object.defineProperty(exports, 'StemmingTokenizer', {
enumerable: true,
get: function get() {
return _index4.StemmingTokenizer;
}
});
Object.defineProperty(exports, 'StopWordsTokenizer', {
enumerable: true,
get: function get() {
return _index4.StopWordsTokenizer;
}
});
var _Search = require('./Search');
Object.defineProperty(exports, 'Search', {
enumerable: true,
get: function get() {
return _Search.Search;
}
});
var _StopWordsMap = require('./StopWordsMap');
Object.defineProperty(exports, 'StopWordsMap', {
enumerable: true,
get: function get() {
return _StopWordsMap.StopWordsMap;
}
});
var _TokenHighlighter = require('./TokenHighlighter');
Object.defineProperty(exports, 'TokenHighlighter', {
enumerable: true,
get: function get() {
return _TokenHighlighter.TokenHighlighter;
}
});
//# sourceMappingURL=index.js.map
In that file, I see that there are no module.exports
, but there are various Object.defineProperty
and few variables starting with _
AFAIK, underscores in javascript are just conventions. So I assume the underscore variables should be atleast available in the JsSearch
variable if I import them and hence it should not be undefined(isn't it?)
So basically how does this npm module even work with require
and what should I do to make it work with import
?
(I found this issue on its github repo: https://github.com/bvaughn/js-search/issues/33 maybe this helps)
Upvotes: 0
Views: 143
Reputation: 2236
Here https://github.com/bvaughn/js-search you can find an example of usage of this package
You need to import it this way
import * as JsSearch from 'js-search';
Because in source code in index.js you can see that there is no export with name JsSearch. So you can't import it this way.
Upvotes: 1