Webpack Facebook 登录按钮错误

Webpack Facebook Login Button error

我正在使用 Webpack 来打包我的文件。我想为我的用户提供 FB 登录。我已经创建了我的 FB 应用程序,并像这样包含在我的 HTML 中:

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId            : 'xxxxxx',
            autoLogAppEvents : true,
            xfbml            : true,
            version          : 'v2.10'
        });
        FB.AppEvents.logPageView();
    };

    (function(d, s, id){
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

</script>

我也有一个div:

<div class="fb-login-button btn-fb"
 data-max-rows="1"
 data-size="large"
 data-button-type="continue_with"
 data-show-faces="false"
 data-auto-logout-link="false"
 data-use-continue-as="false"
 scope="public_profile, email"
 onlogin="checkLoginState()">
</div>

当我部署时,我可以看到 FB 对话框,但是它给出了一个错误:

"sdk.js:110 Uncaught ReferenceError: checkLoginState is not defined"

函数 checkLoginState 在我的 login.js 文件中定义,它是 webpack 的入口点。

我的猜测是 checkLoginState 需要在全局范围内公开才能修复此错误。所以我尝试了

window.checkLoginState = function() {
...
}

但是没有用。

根据我的测试,我发现只有当我在 checkLoginState 函数中添加另一个 JS 调用时才会出现此行为,即:

window.checkLoginState = function () { 
  console.log("checkLoginState >>>"); 
  socialAuth.checkFBLoginStatus(); 
}; 

如果我删除 socialAuth.checkFBLoginStatus() 调用,则会找到 checkLoginState

我正在寻求帮助以解决此错误。

我让它工作的唯一方法是将函数放在同一个 JS 文件中,而不是将它们放在不同的文件中。

我的 socialAuth JS 文件也在调用另一个 JS 文件中的函数。我在 socialAuth 中提取了所有这些功能,然后它起作用了。