请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

访问locahost 出现问题

bin/www.js

const http = require("http");
const handleRequest = require("../app");
const root = 8001;
const server = http.createServer(handleRequest);
server.listen(root);

app.js

const handleBlogRouter = require("./src/router/blog");
const handleUserRouter = require("./src/router/user");
const queryString = require("querystring");
// 处理postData
const getPostData = (req) => {
  const promise = new Promise((resolve, reject) => {
    // 如果不是post请求,直接返回空对象
    if (req.method !== "POST") {
      resolve({});
      return;
    }
    // 如果不是json格式,直接返回空对象
    if (req.headers["content-type"] !== "application/json") {
      resolve({});
      return;
    }
    let postData = "";
    req.on("data", (chunk) => {
      postData += chunk.toString();
    });
    req.on("end", () => {
      if (!postData) {
        resolve({});
        return;
      }
      resolve(JSON.parse(postData));
    });
  });
  return promise;
};
const handleRequest = (req, res) => {
  res.setHeader("Content-Type", "application/json");
  const url = req.url;
  req.path = url.split("?")[0];
  req.query = queryString.parse(url.split("?")[1]);

  getPostData(req).then((postData) => {
    req.body = postData;
    // 处理blog路由  mysql版本
    const blogResult = handleBlogRouter(req, res); 
    if (blogResult) {
      blogResult.then((blogData) => {
        res.end(JSON.stringify(blogData));
      });
      return;
    }
    // 未命中路由,返回404
    res.writeHead(404, { "Content-Type": "text/plain" });
    res.write("404 Not Found\n");
    res.end();
  });
};
module.exports = {handleRequest};

db/mysql.js

const mysql = require("mysql");
const { MYSQL_CONF } = require("../conf/db");
// 创建链接对象
const con = mysql.createConnection(MYSQL_CONF);
// 开始链接
con.connect();
// 统一执行sql的函数 
function exec(sql) {

  const promise = new Promise((resolve, reject) => {
    con.query(sql, (err, result) => {
      if (err) {
        reject(err)
        return;
      }
      resolve(result);
    });
  });
  return promise;
}

module.exports={
    exec
}

router/blog.js

const { getList, getDetail,newBlog,updateBlog ,deleteBlog } = require("../controller/blog");
const { SuccessModel, ErrorModel } = require("../module/resModel");
const handleBlogRouter = (req, res) => {
  const meathod = req.method; // GET POST
  const url = req.url;
  const path = url.split("?")[0];
  const id = req.query.id;

  // 获取博客列表
  if (meathod === "GET" && path === "/api/blog/list") {
    const author = req.query.author || "";
    const keyword = req.query.keyword || "";
    // const listData = getList(author, keyword);

    const result = getList(author, keyword); 
    return result.then((listData) => {
      return new SuccessModel(listData);
    }); 
  } 
module.exports = handleBlogRouter;

项目结构为,没有任何语法错误

图片描述

执行完nodemoon 是成功的
图片描述
mysql 也启动了,服务也连接了
终端:
图片描述

客户端
图片描述

访问后出现下面结果

图片描述

麻烦老师看一,卡了挺久了,感谢

正在回答 回答被采纳积分+3

1回答

双越 2023-10-13 08:21:00

看你最后的截图,服务根本没有启动成功。

你先别用 nodemon ,直接用 node 启动服务,看是否有报错?

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标5156652 #1
    使用node 可以启动 使用 nodemon 不能启动 这个是什么原因呢?
    回复 有任何疑惑可以回复我~ 2023-10-13 10:48:07
  • 双越 回复 提问者 慕标5156652 #2
    这个我还真没遇到过。你确定是 nodemon 导致的问题?我咋感觉可能是别的原因呢
    回复 有任何疑惑可以回复我~ 2023-10-13 14:32:10
  • 提问者 慕标5156652 回复 双越 #3
    目前没有定位到原因,老师可以用我的代码跑一下吗
    回复 有任何疑惑可以回复我~ 2023-10-13 19:43:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信