19

このリンクを開始ファイルとして使用してプロジェクトを作成しました。

https://github.com/facebookincubator/create-react-app

しかし、Facebookのログインボタンを公式ドキュメントに従って作成しようとした後、これを使用しました。

componentDidMount(){
    console.log('login mount');
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '320866754951228',
            xfbml      : true,
            version    : 'v2.6'
        });

        FB.getLoginStatus(function(response) {
            //this.statusChangeCallback(response);
        });

    };

    (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'));
}

そのため、ブラウザが更新されたときにこのエラーが発生しました。

Failed to compile.

Error in ./src/components/user_profile/LoginForm.js

/Sites/full_stack_production/xxxxx
  70:13  error  'FB' is not defined  no-undef
  76:13  error  'FB' is not defined  no-undef

✖ 2 problems (2 errors, 0 warnings)

だから、このエラーを引き起こすESLintが原因だと思います。これを修正したり、このFB変数の例外を作成したりするにはどうすればよいですか?

ありがとう!

4

5 に答える 5

46

FBESLint は、変数がグローバルであることを知りません。ファイルの先頭に以下を追加することで、参照した変数をグローバルとして宣言できます。

/*global FB*/

詳細については、公式 ESLint ドキュメントの「ルールの詳細」セクションを確認してください: http://eslint.org/docs/rules/no-undef

于 2016-11-07T14:43:08.997 に答える
16

Create React App を使用する場合は、グローバル変数を明示的に取得する必要がありますwindow
例えば:

// It's a global so need to read it from window
const FB = window.FB;

ただし、ライブラリが npm パッケージとして利用可能な場合は、インポートを使用できます。

// It's an npm package so you can import it
import $ from 'jquery';

これが役立つことを願っています!

于 2016-11-12T18:04:24.767 に答える
-2

this.FB代わりに使用することでこれを修正できますFB

于 2016-11-07T14:36:11.087 に答える