RequireJS QCodeDecoder exports Uncaught TypeError: object is not a function
RequireJS QCodeDecoder exports Uncaught TypeError: object is not a function
我正在尝试使用 qcode-decoder 作为库之一在我的 django 项目中实现 requirejs (https://github.com/cirocosta/qcode-decoder/blob/master/src/qcode-decoder.js)。
在 html 我这样做:
<script src="{{STATIC_URL}}js/libs/require.js"></script>
<script src="{{STATIC_URL}}js/pages/pay_iframe.js"></script>
这是我的 pay_iframe.js:
requirejs.config({
baseUrl: '/static/js/pages',
paths: {
qcode_decoder: '../libs/qcode/qcode-decoder',
porthole: '../libs/porthole',
jquery: '../libs/jquery',
pay_iframe: 'pay_iframe',
},
shim: {
'qcode_decoder': {
exports: 'QCodeDecoder',
},
'pay_iframe': {
deps: ['jquery', 'qcode_decoder', 'porthole'],
},
}
});
require(['jquery', 'qcode_decoder', 'porthole'], function($, QCodeDecoder) {
console.log(QCodeDecoder);
var qr = new QCodeDecoder();
if (!(qr.isCanvasSupported() && qr.hasGetUserMedia())) {
...
}
...
});
一切似乎都以正确的顺序加载正常,但是当我尝试创建 QCodeDecoder 对象(顺便说一句,它在实现 requirejs 之前工作)时,我收到以下错误:
Uncaught TypeError: object is not a function
我猜是因为 QCodeDecoder 是一个对象(由 console.log 打印):
Object {imagedata: null, width: 0, height: 0, qrCodeSymbol: null, debug: false…}
但是这个对象不包含以后使用的函数(isCanvasSupported 和 hasGetUserMedia)所以我不能这样做:
var qr = QCodeDecoder;
也不行。
也许我应该导出(在垫片配置中)其他东西?
请帮帮我。
将require
更改为define
即可解决。
我正在尝试使用 qcode-decoder 作为库之一在我的 django 项目中实现 requirejs (https://github.com/cirocosta/qcode-decoder/blob/master/src/qcode-decoder.js)。 在 html 我这样做:
<script src="{{STATIC_URL}}js/libs/require.js"></script>
<script src="{{STATIC_URL}}js/pages/pay_iframe.js"></script>
这是我的 pay_iframe.js:
requirejs.config({
baseUrl: '/static/js/pages',
paths: {
qcode_decoder: '../libs/qcode/qcode-decoder',
porthole: '../libs/porthole',
jquery: '../libs/jquery',
pay_iframe: 'pay_iframe',
},
shim: {
'qcode_decoder': {
exports: 'QCodeDecoder',
},
'pay_iframe': {
deps: ['jquery', 'qcode_decoder', 'porthole'],
},
}
});
require(['jquery', 'qcode_decoder', 'porthole'], function($, QCodeDecoder) {
console.log(QCodeDecoder);
var qr = new QCodeDecoder();
if (!(qr.isCanvasSupported() && qr.hasGetUserMedia())) {
...
}
...
});
一切似乎都以正确的顺序加载正常,但是当我尝试创建 QCodeDecoder 对象(顺便说一句,它在实现 requirejs 之前工作)时,我收到以下错误:
Uncaught TypeError: object is not a function
我猜是因为 QCodeDecoder 是一个对象(由 console.log 打印):
Object {imagedata: null, width: 0, height: 0, qrCodeSymbol: null, debug: false…}
但是这个对象不包含以后使用的函数(isCanvasSupported 和 hasGetUserMedia)所以我不能这样做:
var qr = QCodeDecoder;
也不行。 也许我应该导出(在垫片配置中)其他东西? 请帮帮我。
将require
更改为define
即可解决。