ESLint no-undef - 与BigCommerce的js问题

时间:2017-05-09 19:29:28

标签: javascript bigcommerce eslint

我在.js文件中有这个代码,我正在通过ESLint运行。但它在这一行上引发了一个错误:iFrameResize({

说:error 'iFrameResize' is not defined no-undef

如果我这样定义:const iFrameResize()

我的代码不再有效,如何让ESLint满意并保持代码正常工作?

export default class Page extends PageManager {

before(next) {
    next();
}

loaded(next) {
    next();
}

after(next) {
    const url = Url.parse(location.href, true);
    const IC_PAGE = '/international-checkout';
    const currentPageUrl = url.pathname;
    if (currentPageUrl.indexOf(IC_PAGE) !== -1 && $('#icForm').length === 1) {
        $(document).ready(() => {
            if ($('#icForm').length === 1) {
                if ($('.GiftStatus') && $('.GiftStatus').val() === '1') {
                    alert('Gift Certificate is not available for international orders. Please remove Gift Certificate from shopping cart before proceeding with International Checkout.');
                    window.parent.location.href = '/cart.php';
                    return false;
                }
                $('.icformfields').each((i, e) => {
                    const currentId = $(e).attr('id');
                    const res = currentId.split('-');
                    const finalId = Number(res[1]) + 1;
                    const finalName = $(e).attr('name') + finalId;
                    $(e.currentTarget).attr('name', finalName);
                });
                document.getElementById('icIframe').src = 'https://www.internationalcheckout.com/cart.php';
                document.getElementById('icForm').submit();
                $('#icIframe').load(() => {
                    $('#icForm').remove();
                    $('#loading').css('display', 'none');
                    $('html, body').animate({
                        scrollTop: $('#icIframe').offset().top,
                    }, 1000);
                    $('#icIframe').fadeIn();
                });
            }
        });
        iFrameResize({
            checkOrigin: false,
            enablePublicMethods: true,
        });
    }
    next();
}

}

我想知道如何在不禁用特定行的错误报告的情况下满足ESLint。

2 个答案:

答案 0 :(得分:5)

值得注意的是,eslint提供了多种解决方法。 请参阅eslint docs

我建议将以下内容添加到文件顶部。使用此方法定义仅在几个地方使用的全局依赖项:

/* global iFrameResize, iFrameManage, etc */

您还可以提供数组:

.eslintrc

如果您经常使用iFrameResize,或者您依赖于jQuery之类的东西,请考虑将其定义为"globals": { "iFrameManage": true, } 文件中的全局。

query_ch <- "insert into [blah].[dbo].[blahblah] 
               (col1, col2, col3, col4, col5)
               values (?,?,?,?,?)"

sqlExecute(channel, query_ch, my_data) 

答案 1 :(得分:3)

如果您确定代码正在iFrameResize()上工作,并且可能是因为您使用js文件设置的体系结构,您可能只想忽略该错误。最简单的是

// eslint-disable-line

禁用该行的esilnt。

由于此函数定义来自可能将其附加到window的全局作用域的库,因此从该作用域调用它可以解决这个问题

window.iFrameResizer()

现在eslint知道你正在调用驻留在window对象的函数,所以它不会抱怨