2016-07-06 31 views
0

Ich benutze das PSI NPM-Paket in einer einfachen Route. https://github.com/addyosmani/psi Verwendet die Psi-Methode aus der Bibliothek. Das Skript wartet jedoch nicht auf das erwartete Ergebnis. Es funktioniert Ok in der Konsole. Allerdings muss ich die Antwort an den Browser zurückgeben und dort anzeigen. Wie kann ich das machen? Hinweis: psi Methode a Versprechen.Wie können die von PageSpeed ​​Insight empfangenen Daten vom Knoten in einer Route zurückgegeben werden?

app.get('/psi', function(req, res){ 
    res.type('text/html'); 
    return psi('example.com',{ key: '*Iz*Sy*****PiZ***wz7****sy*****', strategy: 'desktop'}).then(data => { 
     console.log('Speed score: ' + data.ruleGroup.SPEED.score); 
     console.log('done'); 
     res.json({ 'results' : data.ruleGroup.SPEED.score }); 
    }); 

}); 

Antwort

0

Ich könnte falsch liegen, aber sollten Sie nicht die return Anweisung entfernen? Wenn psi ein Versprechen zurückgibt und Sie psi zurückgeben, glaube ich, dass die -Anweisung nach der app.get-Funktion hinzugefügt werden sollte, da sie dort zurückgegeben wird, aber dann können Sie nicht auf res zugreifen. Also, versuchen Sie einfach return zu entfernen?

+0

Ja, habe ich irgendwann entfernt und jetzt die Ergebnisse angezeigt. Ich denke jedoch, dass ich diese Anfrage zu Ajax machen muss. Also, gibt es eine Möglichkeit, ich kann es nach der Arbeit mit den Daten zurückgeben und die abgeleiteten Ergebnisse zurückgeben? –

+0

Ich glaube, dass deine Lösung mit 'res.json' funktionieren sollte, nicht wahr? Wenn es nicht funktioniert, ist es wahrscheinlich, weil Sie einige Einstellungen zu "app.use" hinzufügen oder einige Header hinzufügen müssen. Versuchen Sie, die Antworten zu protokollieren, die Sie senden und überprüfen möchten, damit sie das richtige Format haben usw. – flott