使用Node.js搭建服务器

使用Node.js搭建服务器

1.安装Node.js和npm

  • 安装教程自行搜索(好多),建议Node.js直接安装在C盘

  • 注意镜像的设置:npm install -g cnpm --registry=https://registry.npm.taobao.org

  • 注意版本检查:

    复制代码
    //以下是我使用的版本号
    node -v  v14.21.2
    npm -v  6.14.17

2.创建一个空的文件夹,打开该路径下的终端(快捷键cmd+Enter)

  • 输入 npm init 初始化项目 ,设置一下 package name(正常起个名),后续一路回车即可,直到文件夹中出现 package.json 文件。
  • 注意:如果觉得麻烦直接 npm init -y 创建,生成一个默认的 package.json 文件

3.安装Express框架输入: npm i express

4.创建 server.js 文件,在文件中写上以下代码:

复制代码
//导入express
const express = require('express');
//创建web服务器
const app = express();

// 通过app.listen进行服务器的配置,并启动服务器
//接收两个配置参数,一个是对应的端口号,一个是启动成功的回调函数
app.listen(5000,()=>{
    console.log('5000端口服务器启动成功');
})

//结合React的github案例的server.js文件
const express = require("express")
const axios = require("axios")
const app = express()

app.get("/search/users", function (req, res) {
  const {q} = req.query
  axios({
    url: 'https://api.github.com/search/users',
    params: {q}
  }).then(response => {
    res.json(response.data)
  }).catch(error => {
    // 捕获请求失败的情况,并返回适当的错误信息给客户端
    if (error.response) {
      // 请求已经发出,但是服务器返回了非2xx的状态码
      res.status(error.response.status).json({ error: error.response.statusText });
    } else if (error.request) {
      // 请求发出了,但是没有收到响应
      res.status(500).json({ error: "No response from server" });
    } else {
      // 其他错误
      res.status(500).json({ error: error.message });
    }
  });
})
 
app.get("/search/users2", function (req, res) {
  res.json({
    items: [
      {
        login: "yyx990803",
        html_url: "https://github.com/yyx990803",
        avatar_url:
          "https://avatars3.githubusercontent.com/u/499550?s=460&u=de41ec9325e8a92e281b96a1514a0fd1cd81ad4a&v=4",
        id: 1,
      },
      {
        login: "red456",
        html_url: "https://github.com/ruanyf",
        avatar_url: "https://avatars2.githubusercontent.com/u/905434?s=460&v=4",
        id: 2,
      },
      {
        login: "yyx9908032",
        html_url: "https://github.com/yyx990803",
        avatar_url:
          "https://avatars3.githubusercontent.com/u/499550?s=460&u=de41ec9325e8a92e281b96a1514a0fd1cd81ad4a&v=4",
        id: 3,
      },
      {
        login: "Banner",
        html_url: "https://github.com/ruanyf",
        avatar_url: "https://avatars2.githubusercontent.com/u/905434?s=460&v=4",
        id: 4,
      },
      {
        login: "yyx9908033",
        html_url: "https://github.com/yyx990803",
        avatar_url:
          "https://avatars3.githubusercontent.com/u/499550?s=460&u=de41ec9325e8a92e281b96a1514a0fd1cd81ad4a&v=4",
        id: 5,
      },
      {
        login: "abc3344",
        html_url: "https://github.com/ruanyf",
        avatar_url: "https://avatars2.githubusercontent.com/u/905434?s=460&v=4",
        id: 6,
      },
      {
        login: "yyx9908034",
        html_url: "https://github.com/yyx990803",
        avatar_url:
          "https://avatars3.githubusercontent.com/u/499550?s=460&u=de41ec9325e8a92e281b96a1514a0fd1cd81ad4a&v=4",
        id: 7,
      },
      {
        login: "apple822",
        html_url: "https://github.com/ruanyf",
        avatar_url: "https://avatars2.githubusercontent.com/u/905434?s=460&v=4",
        id: 8,
      },
      {
        login: "yyx9908035",
        html_url: "https://github.com/yyx990803",
        avatar_url:
          "https://avatars3.githubusercontent.com/u/499550?s=460&u=de41ec9325e8a92e281b96a1514a0fd1cd81ad4a&v=4",
        id: 9,
      },
    ],
  });
});

app.listen(5000, "localhost", (err) => {
  if (!err){
  	console.log("服务器启动成功")
  	console.log("请求github真实数据请访问:http://localhost:5000/search/users")
  	console.log("请求本地模拟数据请访问:http://localhost:5000/search/users2")
  } 
  else console.log(err);

5.运行服务器输入:node server.js

  • 如果你觉得麻烦,可以更改 package.json 文件的配置

    json 复制代码
    "scripts": {
        "start": "node server.js"
    },
  • 更改完毕运行服务器输入:npm start

相关推荐
糖拌西瓜皮4 小时前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
大树8820 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠21 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质21 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz21 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
智通1 天前
Node.js事件循环核心机制
node.js
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix