【发布时间】:2019-09-16 18:30:45
【问题描述】:
我正在尝试在 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 repo 上发现了这个问题:https://github.com/bvaughn/js-search/issues/33 也许这有帮助)
【问题讨论】:
-
也许它是一个客户端搜索库并且
jsSearch变量在window上可用?这在节点中不起作用。 -
它的 vue js 应用。所以毫无疑问节点@Kokodoko
-
文档说要像这样导入它:
import * as JsSearch from 'js-search' -
@rahulserver 你使用了
node标签... -
@Rudy 哪个文档这么说?
标签: javascript node.js vue.js npm webpack