1

このメッセージは Chrome でのみ表示されます。Firefoxは問題なく動作します。このエラーが発生している時点を見つけようとしてデバッグしてきましたが、それを突き止めることができないようです。正確なメッセージは、all.js:57 からの「Uncaught TypeError: null のメソッド 'shift' を呼び出せません」です。

また、私はあなたが私を助けるのに役立つかもしれない他のいくつかのことに注意します:

  • SDK を requirejs モジュールとしてロードしています。「通常の方法」でもロードしようとしましたが、結果は同じです。
  • ローカルでは発生せず、ステージング サーバーでのみ発生します。これは、SDK のロード中にレイテンシーを行う何かがあると私に思わせます。
  • Chromeでのみ発生しています。Firefox は Safari と同様に機能します。Safari での唯一の違いは、タイプの問題であるという同様のエラーが表示されることです。「'null' is not an object (evaluating 'queue.shift`)」@ debug.js:2712 というメッセージがありますが、アプリは壊れません。

ここでのヘルプや洞察は素晴らしいでしょう。

4

4 に答える 4

1

SDKスクリプトの呼び出しを書き直したことが役に立ちました。facebookで説明されているように呼び出す必要があります。

まず、id='fasebook-jssdk' という単純なスクリプトを head 要素に追加しようとしましたが、メソッド 'shift' でエラーが発生しました。次に、FB.init() を使用せずに、Facebook で推奨されているように書き直しました。しかし、FB.init() 呼び出しを追加するまでエラーが発生し続けました。今は正常に動作します。

それを解決しようとして、「all.js」ファイルのデバッグ バージョンを見つけました。ここで、次のコードでエラーが発生することがわかりました。

function flush() {
  if (!queue) {
    return;
  }

  var fn;
  while (fn = queue.shift()) {
    fn();
  }
  queue = null;
}

queue は関数の配列です。理由はわかりませんが、スクリプトが正常に動作するようになれば、その必要はなくなります。私よりも良心的な人が見つけてくれるかもしれません。

于 2013-12-01T19:45:03.900 に答える
0

これらのFacebook Instructionsは、SDK を呼び出す別の方法を説明しており、これは私にとってはうまくいきました。まだテストしていませんが、チャンネル ファイルを使用すると、これをローカルでテストできると思います。これは非常に便利です。

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID from the App Dashboard
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
      status     : true, // check the login status upon init?
      cookie     : true, // set sessions cookies to allow your server to access the session?
      xfbml      : true  // parse XFBML tags on this page?
    });

    // Additional initialization code such as adding Event Listeners goes here

  };

  // Load the SDK's source Asynchronously
  // Note that the debug version is being actively developed and might 
  // contain some type checks that are overly strict. 
  // Please report such bugs using the bugs tool.
  (function(d, debug){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
     ref.parentNode.insertBefore(js, ref);
   }(document, /*debug*/ false));
</script>
于 2013-02-26T14:29:29.167 に答える
0

申し訳ありませんが、私は多くを助けることができますが、問題を解決するのに役立つ可能性のある同じ問題があります.

JS の読み込みは次のようになります。

<script src='//connect.facebook.net/en_US/all.js'></script> 

「ローカルでは発生していません。ステージング サーバーでのみ発生しています。これにより、SDK の読み込み中に遅延が発生していると思われます。」

私は同意する傾向があります。エラーは散発的にのみ発生するようです。さらに、ときどき CURLOPT_IPRESOLVE undefined エラーが発生します。すべて接続性に関連しているようです。

于 2013-01-31T03:50:18.880 に答える