Ich habe zwei URLs, die eine .json.gz
Datei -Express.js - Verwenden Sie verschachtelte Anforderung JSON erhalten von Backup-URL
var url = "http://post.s3post.cf/s3posts.json.gz";
var backupURL = "https://s3-us-west-2.amazonaws.com/s3post.cf/s3posts.json.gz";
Ich bin in der Lage erfolgreich die Anforderungsmodul verwendenjson
von der bekommen Datei -
app.all('*', function(req, res, next) {
request({
method: 'GET',
uri: url,
gzip: true
}, function(error, response, body) {
res.locals.posts = JSON.parse(body);
next();
});
});
Was ich will, ist zu tun, wenn die Anforderung mit url
ausfällt, möchte ich die backupURL
verwenden, um die json
von zu bekommen. So logisch, dachte ich, wenn ich einen Fehler empfangen, ich hat einen verschachtelten Wunsch, dies zu tun verwenden würde -
app.all('*', function(req, res, next) {
request({
method: 'GET',
uri: url,
gzip: true
}, function(error, response, body) {
if(error) {
request({
method: 'GET',
uri: backupURL,
gzip: true
}, function(error, response, body) {
res.locals.posts = JSON.parse(body);
next();
});
} else {
res.locals.posts = JSON.parse(body);
next();
}
});
});
Dies funktioniert nicht. Beide URLs arbeiten einzeln mit einer Anfrage. Was kann ich tun, um backupURL
zu verwenden, wenn die Anfrage mit url
fehlschlägt?
EDIT 1-
Das Programm kompiliert und beginnt zu meiner app zu hören. Es ist, wenn ich eine Seite anfordern, die es mit diesem Fehler abstürzt -
undefined:1
<?xml version="1.0" encoding="UTF-8"?>
^
SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at Request._callback (/Users/Anish/Workspace/NodeJS/unzipper/app.js:65:28)
at Request.self.callback (/Users/Anish/Workspace/NodeJS/unzipper/node_modules/request/request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:194:7)
at Request.<anonymous> (/Users/Anish/Workspace/NodeJS/unzipper/node_modules/request/request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:191:7)
at IncomingMessage.<anonymous> (/Users/Anish/Workspace/NodeJS/unzipper/node_modules/request/request.js:1091:12)
at Object.onceWrapper (events.js:293:19)
‚Problem‘ ist kein Problem Beschreibung. Es gibt Konsequenzen, genau diese. Nämlich jeder Fehler, der angezeigt wird. Sie können auch ein arum-mans-debugging verwenden und console.log-Anweisungen hinzufügen, um genau zu sehen, welchen Pfad der Code einnimmt und was der Inhalt von Variablen zu diesem Zeitpunkt ist. – Gimby
@ Gimby Ich habe meine Frage mit der Fehlerinformation bearbeitet. –