我正在尝试在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也许有帮助)
答案 0 :(得分:1)
在这里https://github.com/bvaughn/js-search,您可以找到此程序包用法的示例
您需要以这种方式导入
file_name_all
因为在index.js中的源代码中,您可以看到没有名称为JsSearch的导出。因此,您不能以这种方式导入它。