Javascript需要返回空对象

时间:2017-03-25 16:27:02

标签: javascript meteor

我正在尝试使用网络上的一个名为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字符串。

1 个答案:

答案 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