В настоящее время я изучаю node.js, express и API. Я полный новичок ie до node.js и учусь только 2 дня. Я продолжаю обучение и сталкиваюсь с некоторыми проблемами. Мы создаем очень простое приложение погоды, используя node.js, expressjs, модули body-parser и https. При попытке поиска города я получаю Error: unable to determine the domain name
. Вместо этого я попытался использовать модуль http, но получил то же сообщение. Сообщение отображается как в браузере, так и в терминале. Я гуглил проблему, но не смог ничего найти. Застрял где go отсюда.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather App</title>
</head>
<body>
<form action="/" method="POST">
<label for="cityInput">City Name: </label>
<input id="cityInput" type="text" name="cityName">
<button type="submit">Go</button>
</form>
</body>
</html>
Javascript
const express = require("express");
const https = require("https");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.get("/", function(req, res) {
res.sendFile(__dirname + "/index.html");
});
app.post("/", function(req, res) {
const query = req.body.cityName;
const apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const units = "imperial";
const url = "api.openweathermap.org/data/2.5/weather?q=" + query + "&appid=" + apiKey +"&units=" + units;
https.get(url, function(response) {
response.on("data", function(data) {
const weatherData = JSON.parse(data);
const temp = weatherData.main.temp;
const description = weatherData.weather[0].description;
const icon = weatherData.weather[0].icon
console.log(weatherData);
console.log(weatherData, temp, description)
const imageURL = `http://openweathermap.org/img/wn/${icon}@2x.png`
res.write(`<h1>The temperature in San Luis Obispo is ${temp} with ${description}</h1>`)
res.write("<img src=" + imageURL +">")
res.send();
})
})
})
app.listen(3000, function() {
console.log("Server is running on port 3000.")
})