我正在尝试使用网络上的一个名为himalaya的库,这是一个html解析器。 https://github.com/andrejewski/himalaya
我按照指南导入了库,所以我做了
Repo.insert
但是,当我调用其中一个成员函数时,我收到错误
var himalaya = require('himalaya');
我尝试直接在网络浏览器控制台上执行himalaya.parse(),它可以正常工作。我尝试在js文件中注释掉require语句,该函数不再适用于Web浏览器。
我想这意味着require语句有效吗?但由于某些原因,我不能在我的javascript文件中使用它,只能在浏览器控制台上使用它。
也许是文件范围的东西?这是我的代码的一部分。
TypeError: himalaya.parse is not a function
我确定var himalaya = require('himalaya');
Template.main.onCreated(function () {
var http = new HttpGet("www.someurl.com/", "/somedirectories/", function (response) {
console.log(himalaya.parse(response.content));
});
http.sendRequest();
});
确实包含有效的html字符串。
答案 0 :(得分:0)
当您在himalaya.parse
函数中调用main.onCreated
时,似乎当时未完成加载库。这就是它只能在您的浏览器控制台中运行的原因。检查喜马拉雅图书馆是否有onReady
功能,让您确切知道何时可以使用它。如果没有,你可以:
a)调用main.onRendered
或
b)将解析调用保留在main.onCreated中并设置timeOut以在半秒后调用它:
var himalaya = require('himalaya');
Template.main.onCreated(function () {
var http = new HttpGet("www.someurl.com/", "/somedirectories/", function (response) {
setTimeout(function(){himalaya.parse(response.content)},500);
});
http.sendRequest();
});
如果您遇到setTimeout问题,请检查以下答案: Meteor.setTimeout function doesn't work