NodeJS - response.send()不是函数

Bor*_*ron 0 javascript node.js

我有一个简单的nodejs应用程序,如果网址无效,我正在尝试发送"找不到页面"消息.

const http = require("http");
const port = 4098;

let app = http.createServer((request, response) => {
    let url = request.url;

    switch (url) {
      case "/":
         getStaticFile(response, "./public/home.html");
      break;
      case "/contact":
         getStaticFile(response, "./public/contact.html");
      break;
      default:
         response.send("Oops...Page Not Found!");
      break;
     }
});

function getStaticFile(response, pathToFile) {
  fs.readFile(pathToFile, function(error, data) {
   if (error) {
      response.writeHead("500", { "Content-Type": "text/plain" });
      response.end("500 - Internal Server Error");
    }
   if (data) {
      response.writeHead("200", { "Content-Type": "text/html" });
      response.end(data);
    }
   });
}

app.listen(port, () => {
  !console.log(`Listening to connections on port ${port}`);
});
Run Code Online (Sandbox Code Playgroud)

我将响应传递给getStaticFile但是我得到了一个response.send()不是函数.可能是我的问题?

小智 5

您可能已经基于http模块创建了一个HTTP服务器.

响应,它是一个http.ServerResponse实例,没有.send方法.不过,正如您所知,它确实有一种.end方法.

我的猜测是你看过一些Express代码.Express是构建HTTP服务器的框架,它在常规http模块之上提供了附加功能.

其中一个附加功能是HTTP响应实例的.send方法:

var express = require('express'); 
var app     = express();
var server  = app.listen(3000);

app.get('/', function(request, response) {   
    response.send('hello world!');
});
Run Code Online (Sandbox Code Playgroud)