616 Stimmen

Chrome sendrequest Fehler: TypeError: Umwandlung einer kreisförmigen Struktur in JSON

Ich habe die folgenden...

chrome.extension.sendRequest({
  req: "getDocument",
  docu: pagedoc,
  name: 'name'
}, function(response){
  var efjs = response.reply;
});

die das folgende aufruft.

case "getBrowserForDocumentAttribute":
  alert("ZOMG HERE");
  sendResponse({
    reply: getBrowserForDocumentAttribute(request.docu,request.name)
  });
  break;

Mein Code erreicht jedoch nie "ZOMG HERE", sondern gibt beim Ausführen den folgenden Fehler aus chrome.extension.sendRequest

 Uncaught TypeError: Converting circular structure to JSON
 chromeHidden.JSON.stringify
 chrome.Port.postMessage
 chrome.initExtension.chrome.extension.sendRequest
 suggestQuery

Hat jemand eine Idee, was die Ursache dafür ist?

3voto

PHZ.fi-Pharazon Punkte 904

In meinem Fall verwende ich React Native und habe versucht zu debuggen

console.log(JSON.stringify(object))

und erhielt die Fehlermeldung:

TypeError: Converting circular structure to JSON

Es scheint, dass ich das Objekt auf der Konsole protokolliert bekommen kann, indem Sie nur plain:

console.log(object)

2voto

izilotti Punkte 4631

Ich habe den gleichen Fehler erlebt, wenn ich versuche, die unten stehende Nachricht mit jQuery zu erstellen. Die zirkuläre Referenz geschieht, wenn reviewerName fälschlicherweise zugewiesen wurde msg.detail.reviewerName . JQuery's .val() hat das Problem behoben, siehe letzte Zeile.

var reviewerName = $('reviewerName'); // <input type="text" id="taskName" />;
var msg = {"type":"A", "detail":{"managerReview":true} };
msg.detail.reviewerName = reviewerName; // Error
msg.detail.reviewerName = reviewerName.val(); // Fixed

2voto

In meinem Fall war es ein flush() die nach einigen Codeänderungen im Einheitstest übrig geblieben war.

Vor

it('something should be...', () => {
// do tests
flush();
}

Nach

it('something should be...', () => {
// do tests
}

0voto

Azmeer Punkte 744

Ich war immer den gleichen Fehler mit jQuery formvaliadator, aber wenn ich eine console.log innerhalb Erfolg entfernt: Funktion, es funktioniert.

0voto

ChukwuEmeka Punkte 3281

Sie könnten etwa so vorgegangen sein

<Button onClick={fetchSuggestions}>

Sie haben nicht bemerkt, dass Sie dieser Funktion ein "Ereignisobjekt" übergeben haben.

wenn Sie nichts übergeben wollen, senden Sie einfach einen leeren String

<Button onClick={() => fetchSuggestions()}>

  const fetchSuggestions = async (propsSession) => {
    const {
      error,
      hasNextDoc,
      suggestions: moreSuggestions,
    } = await fetcher(`/admin/fetchSuggestion`, {
      initialRequest: !!propsSession,
      session: propsSession || session,
    });
  }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X