MagicMirrorOrg/MagicMirror · error · Error
Invalid current weather data
Error message
Invalid current weather data
What it means
#handleResponse switches on this.config.type and validates the fetched data before building the weather object. For "current" it requires data.properties; a missing properties object means the latest-observation payload is unusable, so it throws "Invalid current weather data".
Source
Thrown at defaultmodules/weather/providers/weathergov.js:239
}
}
});
this.fetcher.on("error", (errorInfo) => {
if (this.onErrorCallback) {
this.onErrorCallback(errorInfo);
}
});
}
#handleResponse (data) {
try {
let weatherData;
switch (this.config.type) {
case "current":
if (!data.properties) {
throw new Error("Invalid current weather data");
}
weatherData = this.#generateWeatherObjectFromCurrentWeather(data.properties);
break;
case "forecast":
case "daily":
if (!data.properties || !data.properties.periods) {
throw new Error("Invalid forecast data");
}
weatherData = this.#generateWeatherObjectsFromForecast(data.properties.periods);
break;
case "hourly":
if (!data.properties || !data.properties.periods) {
throw new Error("Invalid hourly data");
}
weatherData = this.#generateWeatherObjectsFromHourly(data.properties.periods);
break;
default:
throw new Error(`Unknown weather type: ${this.config.type}`);View on GitHub (pinned to 4b4a59534f)
Solutions
- Log the raw data around the throw to read any NWS error message in the body.
- The provider re-fetches on its interval — wait for the station to resume reporting; if persistent, the station is dead.
- Choose a nearby grid point/station with active reporting, or switch type to "forecast".
- Update MagicMirror if NWS changed the observation schema; check the repo for recent weathergov fixes.
Example fix
// before
case "current":
if (!data.properties) {
throw new Error("Invalid current weather data");
}
// after — fall back to skipping this cycle instead of throwing
if (!data.properties) {
Log.error("[weathergov] No properties in current observation; skipping");
return;
} Defensive patterns
Strategy: type-guard
Validate before calling
const r = await fetch(`${stationId}/observations/latest`, { headers: { "User-Agent": "MagicMirror" } });
const j = await r.json();
if (!j?.properties) console.warn("Station latest observation unavailable — station may be offline"); Type guard
function hasCurrentObservation(d) {
return !!d && typeof d === "object" && !!d.properties
&& typeof d.properties.temperature === "object";
} Try / catch
try {
await provider.initialize();
} catch (err) {
if (err.message === "Invalid current weather data") {
Log.warn("weathergov: station observation unusable — will retry next cycle");
renderPlaceholder(); // skip this cycle rather than crash the module
} else { throw err; }
} Prevention
- Accept that observations/latest can legitimately be empty; handle missing properties gracefully per cycle.
- Log the response body on failure to capture NWS error envelopes.
- Update MagicMirror when NWS changes the observation schema; prefer forecast mode where current data is optional.
When it happens
Trigger: The /observations/latest endpoint returns JSON without a properties field: an API error envelope, an empty/deprecated station observation, or an NWS response shape change.
Common situations: Station temporarily not reporting (properties absent while station is offline); stale observation removed by NWS; rate-limit or error JSON returned with a 200/ok status from a cache layer.
Understand the failure class
Background: "invalid response format", "malformed payload", "missing data field": when an API returns 200 but the response shape is wrong — this error's family across 23 libraries.
Related errors
- Invalid API response
- Invalid grid point data
- No observation stations found
- Failed to fetch grid point: HTTP ${pointsResponse.status}
- Unknown weather type: ${this.config.type}
AI-assisted analysis of MagicMirrorOrg/MagicMirror@4b4a59534f (2026-08-31).
Data as JSON: /api/errors/98d73061aa72d598.
Report an issue: GitHub.