1

FacebookにNode.jsHerokuアプリがあり、ログで次のエラーを見つけ続けています(実際にアプリにアクセスしようとすると、一般的なアプリケーションエラーが発生します)。

2013-03-27T12:58:54+00:00 heroku[web.1]: Starting process with command `node web
.js`
2013-03-27T12:58:55+00:00 app[web.1]: info: socket.io started
2013-03-27T12:58:55+00:00 app[web.1]: Listening on 6925
2013-03-27T12:58:56+00:00 heroku[web.1]: State changed from starting to up
2013-03-27T13:00:40+00:00 app[web.1]: ^
2013-03-27T13:00:40+00:00 app[web.1]: undefined:1
2013-03-27T13:00:40+00:00 app[web.1]:
2013-03-27T13:00:40+00:00 app[web.1]: SyntaxError: Failed to parse JSON body: Un
expected token o
2013-03-27T13:00:40+00:00 app[web.1]:     at Object.parse (native)
2013-03-27T13:00:40+00:00 app[web.1]:     at EventEmitter.emit (events.js:99:17)

2013-03-27T13:00:40+00:00 app[web.1]: SyntaxError: Unexpected token S
2013-03-27T13:00:40+00:00 app[web.1]:     at EventEmitter.mixin._fireError (/app
/node_modules/faceplate/node_modules/restler/lib/restler.js:192:10)
2013-03-27T13:00:40+00:00 app[web.1]:     at IncomingMessage.parsers.json (/app/
node_modules/faceplate/node_modules/restler/lib/restler.js:367:9)
2013-03-27T13:00:40+00:00 app[web.1]:     at EventEmitter.FaceplateSession.get (
/app/node_modules/faceplate/index.js:121:25)
2013-03-27T13:00:40+00:00 app[web.1]:     at mixin._responseHandler (/app/node_m
odules/faceplate/node_modules/restler/lib/restler.js:142:20)
2013-03-27T13:00:40+00:00 app[web.1]:     at EventEmitter.mixin._encode (/app/no
de_modules/faceplate/node_modules/restler/lib/restler.js:184:29)
2013-03-27T13:00:40+00:00 app[web.1]:     at IncomingMessage.parsers.auto (/app/
node_modules/faceplate/node_modules/restler/lib/restler.js:356:21)
2013-03-27T13:00:40+00:00 app[web.1]:     at mixin._responseHandler (/app/node_m
odules/faceplate/node_modules/restler/lib/restler.js:140:16)
2013-03-27T13:00:40+00:00 app[web.1]:     at EventEmitter.mixin._decode (/app/no
de_modules/faceplate/node_modules/restler/lib/restler.js:156:7)
2013-03-27T13:00:41+00:00 heroku[web.1]: Process exited with status 1
2013-03-27T13:00:41+00:00 heroku[web.1]: State changed from up to crashed

私のサーバーコードでは、を使用しています。JSON.stringifyたとえば、クエリからPostgresデータベースに返される回答はconsole.log(data + ': is in the tags table, with tag_id=' + JSON.stringify(result));どこにありますか。resultただし、私は決して使用JSON.parseしないので、このバグは少し紛らわしいです。また、今日までこのバグはありませんでした(私のアプリは月曜日に正常に動作していました)。

また、紛らわしいのは、呼び出しをコメントアウトしてJSON.stringifyもエラーが発生するため、アイデアをいただければ幸いです。

https://github.com/heroku/faceplate/issues/26に従って、コードに次の変更を加えました。

function handle_facebook_request(req, res) {

  // if the user is logged in
  if (req.facebook.token) {

 async.parallel([
  function(cb) {
    // query 4 friends and send them to the socket for this socket id
    req.facebook.get('/me/friends', { limit: 4 }, function(friends) {
      req.friends = JSON.parse(JSON.stringify(friends));
      cb();
    });
  },
  function(cb) {
    // query 16 photos and send them to the socket for this socket id
    req.facebook.get('/me/photos', { limit: 16 }, function(photos) {
      req.photos = JSON.parse(JSON.stringify(photos));
      cb();
    });
  },
  function(cb) {
    // query 4 likes and send them to the socket for this socket id
    req.facebook.get('/me/likes', { limit: 4 }, function(likes) {
      req.likes = JSON.parse(JSON.stringify(likes));
      cb();
    });
  },
  function(cb) {
    // use fql to get a list of my friends that are using this app
    req.facebook.fql('SELECT uid, name, is_app_user, pic_square FROM user WHERE uid in (SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user = 1', function(result) {
      req.friends_using_app = JSON.parse(JSON.stringify(result));
      cb();
    });
  }
], function() {
  render_page(req, res);
});

  } else {
    render_page(req, res);
  }
}

req.????たとえば、各行はreq.friends以前と同じでした。つまり、と呼び出しのreq.friends = friends;両方を追加しましたが、何も変更されていません。JSON.parseJSON.stringify

4

1 に答える 1

1

前述のように、解決策はここにあります:https ://github.com/heroku/faceplate/issues/26ただし、フェースプレートのバージョン0.0.4での修正の詳細があります(ありがとうございます私のプロンプト!)

于 2013-04-03T19:33:54.310 に答える