[英]Unable to send any HTML elements other than <h1> as a function response to HTTPS request using node.js (Express)
If I change "< h1 >" to any other HTML tag such as "< h2 > or < p >" it fails to render them.如果我将“< h1 >”更改为任何其他 HTML 标记,例如“< h2 > 或 < p >”,则无法呈现它们。 I have no idea what's wrong.
我不知道出了什么问题。
const express = require("express");
const https = require("https");
const app = express();
// home page
app.get("/", function (req, res) {
res.sendFile(__dirname + "/index.html");
});
app.post("/", function (req, res) {
const queryCity = "London";
// const queryCity = String(req.body.cityName);
const apiKey = "lorem";
const url =
"https://api.openweathermap.org/data/2.5/weather?q=" +
queryCity +
"&appid=" +
apiKey +
"&units=metric";
https.get(url, function (response) {
response.on("data", function (data) {
const weatherData = JSON.parse(data);
const temp = weatherData.main.temp;
const feel = weatherData.main.feels_like;
const weatherIcon = weatherData.weather[0].icon;
const iconUrl =
"https://openweathermap.org/img/wn/" + weatherIcon + "@2x.png";
res.write(
"<h1>Temperature in " + queryCity + " is " + temp + "deg Celsius.</h1>"
);
res.write("It feels like " + feel + "deg Celsius.");
res.write("<img src=" + iconUrl + ">");
res.send(); // there can only be one res.send()
});
});
});
// server port
app.listen(3000, function () {
console.log("Server live on port 3000");
});
this is what happens when I change h1 to h2 or p.这就是当我将 h1 更改为 h2 或 p 时会发生的情况。 Img tag fails too.
img 标签也失败了。 What am I doing wrong here?
我在这里做错了什么?
This code never fail:这段代码永远不会失败:
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.type('text/html');
res.send('<h1>I am html</h1>');
});
app.listen(process.env.PORT || 8080);
Try to test your html generation with this basic code to be sure that error is not a nodejs issue.尝试使用此基本代码测试您的 html 生成,以确保错误不是 nodejs 问题。
Another tips:另一个提示:
res.write
to res.send
like my exampleres.write
替换为res.send
res.write
several times, just one time sending a string previously created with your html linesres.write
,只需一次发送先前用您的 html 行创建的字符串Had this error as well earlier.之前也有这个错误。 Was able to fix it by adding an html tag on the first
res.write
.能够通过在第一个
res.write
上添加一个 html 标签来修复它。
Using your code, it would be like this;使用你的代码,它会是这样的;
res.write(
"<html><h1>Temperature in " + queryCity + " is " + temp + "deg Celsius.</h1></html>"
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.