Ich verwende den Knoten, um Daten von der Überführung herunterzuladen. Ich erhalte ständig Fehlermeldungen (siehe weiter unten). Wenn ich jedoch file_get_contents im Codeigniter verwende, erhalte ich nie Fehlermeldungen und die Daten werden nicht reibungslos heruntergeladen. Ich frage mich, was ich mit meinem Knotenskript falsch mache? Ich habe sogar weitere Downloadversuche hinzugefügt und das Timeout erhöht, aber kein Glück.
Dies ist mein Knotenskript:
Ich verwende den Knoten, um Daten von der Überführung herunterzuladen. Ich erhalte ständig Fehlermeldungen (siehe weiter unten). Wenn ich jedoch file_get_contents im Codeigniter verwende, erhalte ich nie Fehlermeldungen und die Daten werden nicht reibungslos heruntergeladen. Ich frage mich, was ich mit meinem Knotenskript falsch mache? Ich habe sogar weitere Downloadversuche hinzugefügt und das Timeout erhöht, aber kein Glück. Dies ist mein Knotenskript: [code]const fs = require('fs'); const path = require('path'); const http = require('http');
// Overpass API URL and query const overpassUrl = 'http://overpass-api.de/api/interpreter'; const query = '[out:xml][timeout:25];area(3600382313)->.searchArea;(nwr["landuse"="winter_sports"](area.searchArea););out geom;';
// Path for the temporary XML file const xmlFilePath = path.join(__dirname, '../writable/ski/sknowed_calcs/aa_winter_sports_polygons.xml');
// Maximum number of retries const maxRetries = 3;
// Function to fetch data function fetchData(retries = 0) { console.log(`Fetching data from Overpass API... (Attempt ${retries + 1}/${maxRetries})`);
// Encode query for URL const url = `${overpassUrl}?data=${encodeURIComponent(query)}`;
// Send HTTP GET request with increased timeout http.get(url, { timeout: 220000 }, (res) => { res.setEncoding('utf8'); // Ensure response is treated as UTF-8
if (res.statusCode !== 200) { console.error(`Failed to fetch data: ${res.statusCode} ${res.statusMessage}`); res.resume(); // Consume response to free up memory return; }
// Save the XML response to a file with UTF-8 encoding fs.writeFileSync(xmlFilePath, xmlData, 'utf8'); console.log(`XML file saved at ${xmlFilePath}`); }); }).on('error', (error) => { if (error.code === 'ETIMEDOUT' && retries < maxRetries - 1) { console.error(`Request timed out. Retrying... (${retries + 1}/${maxRetries})`); setTimeout(() => fetchData(retries + 1), 5000); // Retry after 5 seconds } else { console.error('Request failed:', error); } }); }
// Run the function fetchData(); [/code] Dies ist die Fehlermeldung, die ich erhalte: [code]Fetching data from Overpass API... (Attempt 1/3) Fetching data from Overpass API... (Attempt 2/3) Fetching data from Overpass API... (Attempt 3/3)
Request timed out. Retrying... (1/3) Request timed out. Retrying... (2/3) Request failed: AggregateError [ETIMEDOUT]: at internalConnectMultiple (node:net:1139:18) at internalConnectMultiple (node:net:1215:5) at Timeout.internalConnectMultipleTimeout (node:net:1739:5) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { code: 'ETIMEDOUT', [errors]: [ Error: connect ETIMEDOUT 162.55.144.139:80 at createConnectionError (node:net:1675:14) at Timeout.internalConnectMultipleTimeout (node:net:1734:38) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { errno: -110, code: 'ETIMEDOUT', syscall: 'connect', address: '162.55.144.139', port: 80 }, Error: connect ENETUNREACH 2a01:4f8:261:3c4f::2:80 - Local (:::0) at internalConnectMultiple (node:net:1211:16) at Timeout.internalConnectMultipleTimeout (node:net:1739:5) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { errno: -101, code: 'ENETUNREACH', syscall: 'connect', address: '2a01:4f8:261:3c4f::2', port: 80 }, Error: connect ETIMEDOUT 65.109.112.52:80 at createConnectionError (node:net:1675:14) at Timeout.internalConnectMultipleTimeout (node:net:1734:38) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { errno: -110, code: 'ETIMEDOUT', syscall: 'connect', address: '65.109.112.52', port: 80 }, Error: connect ENETUNREACH 2a01:4f9:3051:3e48::2:80 - Local (:::0) at internalConnectMultiple (node:net:1211:16) at Timeout.internalConnectMultipleTimeout (node:net:1739:5) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { errno: -101, code: 'ENETUNREACH', syscall: 'connect', address: '2a01:4f9:3051:3e48::2', port: 80 } ] } [/code] Und das ist mein Codeigniter4-Skript, das nie fehlschlägt: [code] public function osm_get_aa_winter_sports_polygons(){
Ich verwende den Knoten, um Daten von der Überführung herunterzuladen. Ich erhalte ständig Fehlermeldungen (siehe weiter unten). Wenn ich jedoch file_get_contents im Codeigniter verwende, erhalte ich...
Wir haben einige leicht schleppige Tests, die von Zeit zu Zeit fehlschlagen (wir suchen nach warum), aber sie versagen immer mit demselben Text, der in der Ausgabe erscheint.
wir Ich möchte die...
Ich stoße auf ein Problem, bei dem eine PHP-Funktion ein PowerShell-Skript ausführt, um eine Datei zu drucken und Chrome zu öffnen, wenn ich es auf meinem lokalen Computer ausführe. Nach der...
Ich habe ein Problem mit einem Inventarsystem, das ich programmiere. Das Problem ist, dass die Anmeldung nicht funktionieren möchte, sondern das System nicht eingibt, egal wie viel ich die Daten...
Ich habe ein Problem mit einem Inventarsystem, das ich programmiere. Das Problem ist, dass die Anmeldung nicht funktionieren möchte, sondern das System nicht eingibt, egal wie viel ich die Daten...