首页 > 解决方案 > 无法发送除

问题描述

如果我将“< h1 >”更改为任何其他 HTML 标记,例如“< h2 > 或 < p >”,则无法呈现它们。我不知道出了什么问题。

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");
});

这就是我将 h1 更改为 h2 或 p 时发生的情况。Img 标签也失败了。我在这里做错了什么?

标签: javascripthtmlnode.jsexpresshttps

解决方案


此代码永远不会失败:

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);

尝试使用此基本代码测试您的 html 生成,以确保错误不是 nodejs 问题。

另一个提示:

  • 替换res.writeres.send喜欢我的示例
  • 不要res.write多次调用,只需一次发送以前用您的 html 行创建的字符串
  • 将内容类型 text/html 添加到您的响应中

推荐阅读