2013-11-02 67 views
0

我正在尝试使用RequireJS在浏览器中使用require()函数。对于上下文,我正在尝试使用Lob API的节点封装器:https://github.com/hisankaran/lob-node如何在浏览器中使用require

下面是相关代码:

define (function (require) { 
     var LOB = require('lob'); 
     LOB = new LOB(API_KEY); 
    }) 
    // var LOB = new (require('lob')) (API_KEY); 
    console.log('Success?') 

它成功运行,但是当我尝试实际调用任何东西,例如LOB.bankaccounts.create,它说没有定义LOB。

高球文档建议我做简单:

var LOB = new (require('lob')) (LOB_API_KEY); 

,但我一直得到该模块还没有被加载在这里(http://requirejs.org/docs/errors.html#notloaded)描述的上下文错误,所以我想从上面的语法RequireJS网站。

我对RequireJS(和一般编码)超级新手,所以我可能只是在做一些愚蠢的事情。

+0

如果你是使用chrome,请查看开发工具中的网络选项卡。是否所有文件都按照预期要求和交付,或者您是否获得了404或根本没有任何请求? – pax162

回答

2

define()函数必须实际返回它定义的对象。

此外,在浏览器require()应该异步使用,因为同步调用只有在模块已被加载时才起作用。

话虽这么说,我如下会调整你的代码:

define(['lob'], function(LOB){ 
    return new LOB(API_KEY); 
}); 

将在某些模块定义,将其加载到主模块,例如,像这样的

require([ 'myLob' ], function(myLob){ 
// do something with myLob 
});