3

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

以下是相关代码:

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 没有定义。

Lob 文档建议我这样做:

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

但我一直得到模块尚未加载这里描述的上下文错误(http://requirejs.org/docs/errors.html#notloaded),所以我尝试了RequireJS网站上的上述语法。

我对 RequireJS(以及一般的编码)非常陌生,所以我可能只是在做一些愚蠢的事情。

4

1 回答 1

3

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

此外,在浏览器中require()应该异步使用,因为同步调用仅在模块已经加载时才有效。

话虽如此,我将重组您的代码如下:

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

把它放在一些模块定义中并将它加载到你的主模块中,例如,像这样

require( [ 'myLob' ], function( myLob ){
 // do something with myLob
});
于 2013-11-02T15:46:08.993 回答