Javascript要求返回空对象

Javascript要求返回空对象,javascript,meteor,Javascript,Meteor,我正在尝试使用一个在web上找到的名为himalaya的库,它是一个html解析器。 我按照他们的指南导入了库,所以我照做了 var himalaya = require('himalaya'); 然而,当我调用它的一个成员函数时,我得到了一个错误 TypeError: himalaya.parse is not a function 我试着直接在web浏览器控制台上执行himalia.parse(),效果很好。我试着在js文件中注释require语句,该函数在web浏览器上不再工作 我猜

我正在尝试使用一个在web上找到的名为himalaya的库,它是一个html解析器。

我按照他们的指南导入了库,所以我照做了

var himalaya = require('himalaya');
然而,当我调用它的一个成员函数时,我得到了一个错误

TypeError: himalaya.parse is not a function
我试着直接在web浏览器控制台上执行himalia.parse(),效果很好。我试着在js文件中注释require语句,该函数在web浏览器上不再工作

我猜这意味着require语句有效吗?但由于某些原因,我无法在javascript文件中使用它,只能在浏览器控制台上使用

也许是有文件作用域的?这是我的部分代码

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();
});

我确信
response.content
确实包含有效的html字符串

当调用
main.onCreated
函数中的
himalaya.parse
时,此时库的加载似乎没有完成。这就是为什么它只在浏览器控制台中运行。检查himalaya库是否有
onReady
功能,让您确切知道何时可以使用它。如果没有,您可以:

a) 调用
main.onRendered中的parse函数

b) 将解析调用保持在main.onCreated内,并设置一个超时,在半秒钟后调用它,如下所示:

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();
    });
如果设置超时有问题,请检查以下答案:

我仍然有同样的错误。我想我没有正确导入库?如果该命令在浏览器控制台中运行良好,请尝试以下操作:在代码的parse()行之前放置一个调试器。当调试器暂停处理时,在控制台中运行parse命令,您应该会遇到与控制台中相同的问题。这可以确认问题是由于异步处理造成的。我发现了一些奇怪的情况。在服务器控制台上,我发现himalaya未定义。我认为由于导入错误,库只能在客户端使用?您必须在服务器端定义var:var himalia=require('himalia');