如何在浏览器中使用require

时间:2013-11-02 15:42:33

标签: javascript requirejs lob

我正在尝试使用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的新手(以及一般的编码),所以我可能只是做些傻事。

1 个答案:

答案 0 :(得分:3)

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

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

话虽如此,我会按如下方式重构您的代码:

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

将它放在某个模块定义中并将其加载到主模块中,例如,像这样

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