我正在尝试使用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的新手(以及一般的编码),所以我可能只是做些傻事。
答案 0 :(得分:3)
define()
函数必须实际返回它定义的对象。
此外,在浏览器中require()
应该异步使用,因为同步调用仅在模块已加载时才有效。
话虽如此,我会按如下方式重构您的代码:
define( ['lob'], function( LOB ){
return new LOB( API_KEY );
});
将它放在某个模块定义中并将其加载到主模块中,例如,像这样
require( [ 'myLob' ], function( myLob ){
// do something with myLob
});