rahulserver
rahulserver

Reputation: 11205

Unable to import js-search in vue js component

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

Answers (1)

Alonad
Alonad

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

Related Questions