node.js express创建本地服务以及使用pm2启动服务

news2024/9/28 21:30:28

在node.js环境下安装插件:

npm i body-parser
npm i express

 

同目录下创建app.js

// 引入express中间件
const express = require('express');
const bodyParser = require('body-parser');
// 创建web服务器
const app = express();
// 使用body-parser中间件解析JSON类型的请求体,处理post请求参数
app.use(bodyParser.json());
// 拦截所有请求
// extended: false 方法内部使用querystring模块处理请求参数的格式
// extended: true 方法内部使用第三方模块qs处理请求参数的格式
app.use(bodyParser.urlencoded({ extended: false }))
// 指定启动服务器到哪个文件夹
app.use(express.static('./dist'));
app.post('/submit-data', (req, res) => {
  // 通过req.body访问POST参数
  const postData = req.body;
  console.log('postData', postData);
  // 处理postData...
  res.send('Data received');
});
app.get('/', (req, res) => {
  console.log('服务器已启动');
  res.send('返回结果11');
})
app.post('/postid', (req, res) => {
  res.send({ name: '艾利', age: '11' });
})
// 启动服务器监听80端口
app.listen(8081, () => {
  console.log('web server22 running at http://127.0.0.1');
})

浏览器输入:http://localhost:8081/

服务输出日志:

浏览器输入的为get请求,要发送post请求,打开Postman输入http://127.0.0.1:8081/submit-data,在body中设置传参请求

 

可以看到返回的结果,服务也打出结果:

如果我们要频繁修改代码时,每次都要先关闭服务再使用node启动,那有什么更好的方法监听到代码改变后就重启服务呢,有个好的方法是使用pm2来启动服务。

先全局设置安装pm2,

npm i -g pm2

 在app.js同级下新增 ecosystem.config.js

module.exports = {
  apps: [{
    name: 'my-app',
    script: 'app.js',
    // 集群模式,进程数取决于CPU核心数,设置负载
    instances: "max",
    exec_mode: "cluster",//启动模式
    watch: true,//监听代码改变时重启
    max_memory_restart: '500M',//内存超500M时重启
    error_file: "./pm2-err.log",//报错日志
    out_file: "./pm2-out.log",//输出日志
    log_date_format: "YYYY-MM-DD HH:mm:ss",//日志时间格式
    merge_logs: true,
    env: {
      NODE_ENV: 'development',
    },
    env_production: {
      NODE_ENV: 'production',
    },
  }],
};

pm2命令: 

启动命令:pm2 start ecosystem.config.js
终止命令:pm2 stop all

删除命令:pm2 delete all

如果想使用npm命令启动可以在package.json中设置:

"scripts": {

    "serve": "pm2 start ecosystem.config.js",

    "stop": "pm2 stop all",

    "delete": "pm2 delete all"

  },

 现在我们使用npm run serve启动下服务:

可以看到pm2启动了4个进程 ,

再次发起get请求:http://127.0.0.1:8081/

 修改代码:返回结果33

再次请求,可以看到返回结果发生了改变

 如果想看服务输出日志可以使用命令:pm2 logs
其他pm2命令参考:pm2学习笔记 - 简书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对于mp4 android可以正常播放 ios和mac safari不能播放问题处理

直接对原mp4文件进行重新转码就可以了 ffmpeg -i origin.mp4 -vcodec h264 -profile:v high -level 4.1 orgin_hl.mp4 原因源文件不符合苹果基本规则苹果官网文档

在SOLIDWORKS中改善放样的3个要点

在SolidWorks中,“放样”和“扫描”特征是以特征操作复杂和控制艰难而闻名的。通常需要进行精确的选择和仔细的草图管理才能获得最准确并美观的结果。在本文中,我们将向您展示三个简单的技巧,使您的放样特征更上一层楼,同时避免出…

docker映射了端口,宿主机不生效

1、问题产生原因 docker run -d --name my-redis -p 6379:6379 -v /usr/redis.conf:/usr/local/etc/redis/redis.conf team-redis:3.2 redis-server /usr/local/etc/redis/redis.conf 这容器跑起来了,端口6379没用。搞的我一直怀疑哪里出错了,查看配置…

第一篇计算机领域顶会文章怎么发,Best Paper Award其实很简单?

标题:第一篇计算机领域顶会文章怎么发,Best Paper Award其实很简单?! 开头: 计算机顶会,即计算机领域的顶级学术会议,是指在计算机科学及其相关领域内具有极高学术水平和广泛影响力的国际会议…

Web应用加密数据传输方案

目录 概述 最初的方案 改进后的方案 秘钥的过期时间 概述 介于公司最近发布了一个面向C端用户的Web系统,为防止前端调用后端的API接口时,数据传输的内容轻易的被黑客获取,而设计的一个前后端数据加密传输方案 最初的方案 在最开始&#xf…

什么是数据分析,企业数据分析的流程是什么?

“有数据、有准确数据的企业在商业市场中能打败50%的同行; 而能根据数据进行揭示过去、预测未来、优化流程的企业,在商业市场中能打败99%的同行!“ 那么,企业到底应该如何开展数据分析工作呢?这篇从基本概念讲起&#…

【html+css 绚丽Loading】 000014 三元波动盘

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

C++模拟实现priority_queue(优先级队列)

一、priority_queue的函数接口 从上图我们可以看出&#xff0c; priority_queue也是一个容器适配器&#xff0c;我们使用vector容器来模拟实现priority_queue。 namespace bit{#include<vector>#include<functional>template <class T, class Container vector…

Unity教程(十二)视差背景

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

生命科学与医学类专业数据库有哪些

一、Cell Press Cell Press的期刊是生物工程科学方面权威的学术期刊&#xff0c;影响因子一直名列前茅&#xff0c;在生物、医学研究领域享有很高声誉&#xff0c;是公认的了解生物医学最新学术成果的必读文献。可通过Elsevier的ScienceDirect平台访问全文。 二、中华医学期刊…

黑神话:悟空,第一回合boss位置详解大全!

《黑神话&#xff1a;悟空》是一款以中国经典神话为背景的动作角色扮演游戏&#xff0c;玩家将在游戏中扮演齐天大圣孙悟空&#xff0c;经历一系列惊心动魄的冒险和战斗。在游戏的第一章节中&#xff0c;玩家将会遇到各种强大的BOSS&#xff0c;击败它们不仅可以顺利通关&#…

一场机器人盛宴:如何兼顾“月亮”与“六便士”? |直击2024 WRC

一年一度的世界机器人大会是整个机器人行业发展的缩影&#xff0c;从中能看到的是整个行业以及企业内心所怀揣的对未来的理想。 而就2024年来说&#xff0c;这是一场属于机器人的盛宴&#xff0c;也是具身智能公司的集体狂欢。 作者|思杭 编辑|皮爷 出品|产业家 “我们…

Python高阶函数 - reduce

reduce函数作用就是把一个函数作用在一个序列上&#xff0c;这个函数必须接收两个参数&#xff0c;reduce函数把结果继续和序列的下一个元素做累积计算&#xff0c;跟递归有点相似。 reduce函数参数主要包括两个&#xff0c;一个是以上说的作用函数&#xff0c;另外一个是seque…

Shell 脚本开发学习

Shell 教程 1. Shell 脚本 Shell 脚本&#xff08;shell script&#xff09;&#xff0c;是一种为shell编写的脚本程序。注&#xff1a;shell和shell script是两个不同的概念。 2. Shell 环境 Linux 的 Shell 种类众多&#xff0c;常见的有&#xff1a; 。Bourne Shell (/u…

gpt_academic,一个读/写论文的利器

推荐gpt_academic&#xff0c;一个读/写论文的利器 最近看到github上标星60K的读论文和写论文的AI开源工具。 我自己试了一下&#xff0c;配置了五个公司&#xff08;openai、kimi、讯飞、阿里和百度&#xff09;AI的key&#xff0c;能正常使用。 然后我让它读论文&#xff0c…

15 字符数组与二维数组(定义、初始化、访问、遍历、内存调试分析),数组编程练习

目录 1 字符数组&#xff08;字符串&#xff09; 1.1 介绍 1.2 字符数组的定义与初始化 1.2.1 使用字符列表进行初始化 1.2.1.1 VS Code 调试内存 1.2.2 使用字符串字面量进行初始化 1.3 字符数组的访问和遍历 2 多维数组 2.1 介绍 2.2 二维数组的定义 2.2.1 先定义…

探索ACPL-302J光耦合器的多功能性

ACPL-302J是一款高度集成的2.5A栅极驱动光耦合器&#xff0c;经过精心设计&#xff0c;可用于驱动大功率工业应用中的IGBT&#xff08;绝缘栅双极晶体管&#xff09;和功率MOSFET。其精巧的设计和强大的功能使其成为效率、安全性和可靠性至关重要的系统中不可或缺的组件。本文详…

Nature | 应变不敏感的柔性可拉伸射频组件(柔性传感/柔性健康监测/可穿戴电子/界面调控/电子皮肤/柔性电子/集成电路)

韩国首尔汉阳大学Yei Hwan Jung和Hyoungsuk Yoo团队&#xff0c;在《Nature 》上发布了一篇题为“Strain-invariant stretchable radio-frequency electronics”的论文。论文内容如下&#xff1a; 一、 摘要 可实现无线通信和无线能量传输功能的射频&#xff08;radio-frequen…

《黑神话:悟空》专题 收集相关的攻略、壁纸、视频、辅助器等

本专题专注于收集游戏《黑神话&#xff1a;悟空》的相关资料&#xff0c;如游戏攻略、壁纸、音乐、视频等。《黑神话&#xff1a;悟空》是一款以中国神话为背景的动作角色扮演游戏。故事取材于中国古典小说“四大名著”之一的《西游记》。你将扮演一位“天命人”&#xff0c;为…

大佬都在用的抓包工具:Wireshark、BurpSuite分享,零基础入门到精通 (1)

各位师傅们&#xff0c;你们平常用什么抓包工具&#xff1f; 抓包工具多种多样&#xff0c;比如Charles、Microsoft Network Monitor、Tcpdump。今天这些我们都不介绍&#xff0c;而是来介绍两款非常优秀的大牛都在用的抓包工具&#xff1a;Wireshark、BurpSuite。 1 Wiresh…