Paypal checkout.js - 无法读取null的属性'querySelector'

时间:2017-03-09 16:27:50

标签: javascript paypal express-checkout

我的Paypal集成正在使用checkout.js库。我在控制台中收到以下错误。

Uncaught TypeError: Cannot read property 'querySelector' of null
at setup (index.js:265)

第265行看起来像

var button = document.getElementById('buttonContainer').querySelector('button');

我的脚本如下,并成功加载Paypal结帐按钮。由于javascript错误,无法单击该按钮。

<div id="paypal-button"></div>

<script>
    paypal.Button.render({

        env: 'sandbox', // Optional: specify 'sandbox' environment

        payment: function(resolve, reject) {

            var CREATE_PAYMENT_URL = /paypal/create';

            paypal.request.post(CREATE_PAYMENT_URL)
                .then(function(data) { resolve(data.paymentID); })
                .catch(function(err) { reject(err); });
        },

        onAuthorize: function(data) {

            var EXECUTE_PAYMENT_URL = /paypal/execute';

            paypal.request.post(EXECUTE_PAYMENT_URL,
                { paymentID: data.paymentID, payerID: data.payerID })
                .then(function(data) {
                    var orderNumber = data.paymentCart;
                })
                .catch(function(err) {
                    alert('There was an error executing the payment, please try again');
                });
            }
    }, '#paypal-button');
</script>

昨天整合似乎也很好。

2 个答案:

答案 0 :(得分:0)

错误说的是: document.getElementById(&#39; buttonContainer&#39;)为空。

换句话说,我们没有找到任何id为buttonContainer的元素。 因此,它无法在其中执行querySelector。

在共享代码片段的情况下,我们无法提供帮助,因为我们无法确定您是否已定义按钮,以及在加载此按钮时是否可以访问该按钮。

根据经验,我最好的猜测是,按钮可能会在稍后阶段动态加载,并且在您尝试检索按钮时尚未就绪。

答案 1 :(得分:0)

该错误必定是由Paypal库更新引起的,因为错误不再发生。