我正在尝试使用javascript制作和测试trie,并将节点,trie和测试拆分为单独的文件。我正在使用node.js在文件之间共享代码。我尝试弄乱导出并要求,但不断收到类型错误,指出导入不是构造函数。
在trienode.js中
MemoryError
在trie.js中
function trieNode(val, par) {
this.value = val;
this.children = {};
this.isWord = false;
this.freq = 0;
this.parent = par;
}
trieNode.prototype.getValue = function() {
return this.value;
}
module.exports.tn = trieNode();
在test.js中
var trieNode = require('./trienode.js').tn;
function Trie() {
console.log('initialize trie');
console.log(typeof trieNode);
this.root = new trieNode(null);
this.saved = {}
this.current;
}
Trie.prototype.insert = function(word) {
}
Trie.prototype.findSuggestions = function(prefix) {
}
module.exports = Trie();
这是我遇到的错误
var Trie = require('./trie.js');
var trieNode = require('./trienode.js').tn;
var tr = new Trie();
tr.insert("boot");
tr.insert("boot");
tr.insert("boot");
tr.insert("book");
tr.insert("book");
tr.insert("boom");
var sug = tr.findSuggestions("boo");
for(s in sug) {
console.log(s);
}
答案 0 :(得分:2)
您正在导出函数的结果,而不是函数本身。
如果要在导入后调用函数,则只需导出函数:
module.exports.tn = trieNode;
和
module.exports = Trie;
然后,在导入它们之后,调用函数。