无法在Vue JS组件中导入JS搜索

时间:2019-04-27 13:51:16

标签: javascript node.js vue.js npm webpack

我正在尝试在vue组件中导入js-search npm模块。但是只要我这样做:

import JsSearch from 'js-search'

在登录console.log(JsSearch)时,上面的内容未定义。

我进一步调查了npm module

package.json显示"main": "dist/commonjs/index.js" 该文件如下所示:

'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

在该文件中,我发现没有module.exports,但是有各种Object.defineProperty,并且很少有以_开头的变量

AFAIK,JavaScript中的下划线仅是约定。因此,我假设如果导入它们,则JsSearch变量中的下划线变量应该至少是可用的,因此不应未定义(不是吗?)

那么,基本上,这个npm模块甚至如何与require一起工作,我应该怎么做才能使其与import一起工作?

(我在其github存储库上发现了这个问题:https://github.com/bvaughn/js-search/issues/33也许有帮助)

1 个答案:

答案 0 :(得分:1)

在这里https://github.com/bvaughn/js-search,您可以找到此程序包用法的示例

您需要以这种方式导入

file_name_all

因为在index.js中的源代码中,您可以看到没有名称为JsSearch的导出。因此,您不能以这种方式导入它。