Node.js从基础到高级运用】二十三、Node.js中自动重启服务器

引言

在Node.js开发过程中,我们经常需要修改代码后重启服务器来应用这些更改。手动重启不仅效率低下,而且会打断开发流程。幸运的是,有一些工具可以帮助我们自动化这个过程。本文将介绍如何使用nodemon来实现Node.js服务器的自动重启。

什么是nodemon?

nodemon是一个用于Node.js应用程序的实用工具,它会监视项目中的文件变化。当检测到文件变化时,nodemon会自动重启你的Node.js应用程序。这对于开发过程非常有用,因为它可以节省时间并提高效率。

如何安装nodemon?

首先,你需要在全局安装nodemon,这样你就可以在任何Node.js项目中使用它。打开终端并运行以下命令:

npm install -g nodemon

使用nodemon自动重启服务器

假设你已经有一个简单的Node.js服务器,如下所示:

// server.js
const express = require('express');
const app = express();app.get('/', (req, res) => {res.send('Hello World!');
});const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});

要使用nodemon来启动这个服务器并在文件更改时自动重启,你只需在终端中运行以下命令:

nodemon server.js

现在,每当你更改server.js文件或项目中的任何文件时,nodemon都会自动重启服务器。

配置nodemon

你可以通过创建一个名为nodemon.json的配置文件来自定义nodemon的行为。例如:

// nodemon.json
{"ignore": ["*.test.js", "node_modules/"],"watch": ["src/"],"ext": "js,json","exec": "node server.js"
}
  • ignore: 指定nodemon应该忽略的文件或目录。
  • watch: 指定nodemon应该监视的目录。
  • ext: 指定nodemon应该监视的文件扩展名。
  • exec: 指定启动应用程序的命令。

结合使用nodemon和环境变量

如果你的应用程序依赖于环境变量,你可以在启动nodemon时设置它们。例如:
在Windows命令行(cmd)或PowerShell中,你应该使用不同的命令来设置环境变量。

对于Windows命令行(cmd),你可以使用以下语法:

set PORT=8000 && nodemon server.js

对于Windows PowerShell,你可以使用以下语法:

$env:PORT=8000; nodemon server.js

这样就可以在Windows环境中设置环境变量并运行nodemon了。注意,在Windows PowerShell中,变量赋值后面的分号是必须的,它用来分隔两个命令。而在cmd中,我们使用&&来连接两个命令。

这将设置PORT环境变量为8000,并启动server.js

进阶示例

使用 nodemon Express 结合进阶功能如中间件、路由处理以及环境变量的示例:

// server.js
const express = require('express');
const morgan = require('morgan');  // 引入日志中间件
const app = express();// 使用morgan中间件来记录每个请求的详细信息
app.use(morgan('dev'));// 基础路由
app.get('/', (req, res) => {res.send('Welcome to the Home Page!');
});// 动态路由,用于捕捉用户ID
app.get('/user/:id', (req, res) => {res.send(`User ID: ${req.params.id}`);
});// 环境变量中读取端口号
const PORT = process.env.PORT || 3000;app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});// 使用nodemon自定义配置,可以在nodemon.json中设置

在终端运行服务器时,可以使用以下命令来指定环境变量,并运行server.js

$env:PORT=5000; nodemon server.js

这个示例中,我们添加了morgan中间件来自动记录请求日志,方便开发和调试过程中追踪问题。同时,展示了如何处理动态路由,以及如何从环境变量读取配置信息,这对于构建可扩展和易于维护的应用程序至关重要。
在这里插入图片描述

总结

使用nodemon可以显著提高Node.js开发的效率,它可以监听文件变化并自动重启服务器。通过简单的安装和配置,你可以节省大量的时间,并专注于代码的编写而不是重复的重启过程。

希望这篇文章能帮助你更高效地开发Node.js应用程序。如果你有任何问题或建议,请在评论区留言。

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

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

相关文章

AR智能眼镜方案_MTK平台安卓主板芯片|光学解决方案

AR眼镜作为一种引人注目的创新产品,其芯片、显示屏和光学方案是决定整机成本和性能的关键因素。在这篇文章中,我们将探讨AR眼镜的关键技术,并介绍一种高性能的AR眼镜方案,旨在为用户带来卓越的体验。 AR眼镜的芯片选型至关重要。一…

数据结构---绪论

一、绪论: 1.什么是数据? 数据是信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 数据元素--描述一个个体 数据元素,数据项&am…

React + 项目(从基础到实战) -- 第七期

使用ant design 表单组件,开发登录,注册,搜索功能 React 表单组件 ,受控组件 案列 使用defaultVlue属性 bug : 改变了数据源,但是页面未重新渲染 {/* 表单组件 */}<button onClick{()>{console.log(text);}}>打印</button><button onClick{()>[setText(&…

【InternLM 实战营第二期笔记01】书生·浦语大模型全链路开源体系+InternLM2技术报告

本次课程链接在GitHub上&#xff1a;InternLM/Tutorial at camp2 (github.com) 第一次课程录播链接&#xff1a;书生浦语大模型全链路开源体系_哔哩哔哩_bilibili InternLM2技术报告&#xff1a;arxiv.org/pdf/2403.17297.pdf 一、书生浦语大模型全链路开源体系笔记 Intern…

【读书笔记】自动驾驶与机器人中的SLAM技术——高翔

文章会对本书第五章节及以后章节进行总结概括。每日更新一部分。一起读书吧。 第五章——基础点云处理 重点&#xff1a;点云的相邻关系是许多算法的基础 5.1 激光雷达传感器与点云的数学模型 5.1.1激光雷达传感器的数学模型 雷达有两种&#xff1a;机械旋转式激光雷达&…

python 海龟画图tutle螺旋线

目录 初识turtle模块 基本绘图概念 示例&#xff1a;绘制一个正方形 示例&#xff1a;绘制彩色螺旋线 附录 常用命令 其它命令 在Python编程中&#xff0c;使用turtle模块进行图形绘制是一种非常有趣和富有教育意义的活动。通过控制一个小海龟&#xff08;Turtle&#x…

【产品经理修炼之道】- 厂商银业务之保兑仓

保兑仓 保兑仓是指供应商、购货商、银行签订三方协议&#xff0c;以银行信用为载体&#xff0c;以银行承兑汇票为结算工具&#xff0c;由银行控制货权&#xff0c;供应商受托保管货物并对银行承兑汇票保证金以外部分以货物回购为担保措施&#xff0c;购货商随缴保证金随提货而设…

《QT实用小工具·二十六》运行时间记录

1、概述 源码放在文章末尾 运行时间记录&#xff0c;包含如下功能&#xff1a; 可以启动和停止服务&#xff0c;在需要的时候启动。 可以指定日志文件存放目录。 可以指定时间日志输出间隔。 可以单独追加一条记录到日志文件。 日志为文本格式&#xff0c;清晰明了。 软…

AAAI24 - Model Reuse Tutorial

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 该篇 Tutorial 主要对 Model Reuse 当下的进展进行了整理和总结。 The Paradigm Shifts Tutorial 中指出在一些数据量比较…

STM32学习和实践笔记(12):蜂鸣器实验

蜂鸣器主要分为两种&#xff0c;一种是压电式的无源蜂鸣器&#xff0c;一种是电磁式的有源蜂鸣器。 有源和无源是指其内部有没有振荡器。 无源的没有内部振荡器&#xff0c;需要输入1.5-5KHZ的音频信号来驱动压电蜂鸣片发声。 有源的内部有振荡器&#xff0c;因此只需要供给…

PostgreSQL入门到实战-第二十七弹

PostgreSQL入门到实战 PostgreSQL中数据分组操作(二)官网地址PostgreSQL概述PostgreSQL中HAVING命令理论PostgreSQL中HAVING命令实战更新计划 PostgreSQL中数据分组操作(二) 使用PostgreSQL HAVING子句来指定组或聚合的搜索条件 官网地址 声明: 由于操作系统, 版本更新等原因…

基于Python豆瓣电影数据可视化分析系统的设计与实现

大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现 2024最新项目 项目介绍 本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示&#xff0c;构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据&#xff0c;我们提供了…

Docker:使用编排Compose快速部署容器化应用

1、简述 Docker Compose 是 Docker 官方提供的一个工具&#xff0c;用于定义和管理多容器应用。它通过一个简单的 YAML 文件来定义应用的服务、网络、卷等配置&#xff0c;并提供了一组命令来启动、停止、构建和管理应用。使用 Docker Compose 可以让开发人员轻松地在本地开发…

cdn加速与ssl加速

cdn CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输的更快、更稳定。 简单的来说&#xff0c;就是把原服务器上数据复制到其他服务器上&#xff0c;用户访…

蓝桥杯——松散子序列

题目 分析 很明显的动态规划问题&#xff0c;每次我们都取当前位置的最大值就可&#xff0c;从头开始&#xff0c;dp[i]max(dp[i-2],dp[i-3])num[i-3]. 代码 ninput() num[] for i in n:num.append(ord(i)-96) dp[0]*(len(num)3) for i in range(3,len(num)3):dp[i]max(dp[i…

锁策略总结

锁策略 悲观锁和乐观锁 乐观锁和悲观锁不是具体类型的锁而是指两种不同的对待加锁的态度&#xff0c;这两个锁面对锁冲突的态度是相反的。 乐观锁&#xff1a;认为不存在很多的并发操作&#xff0c;因此不需要加锁。悲观锁&#xff1a;认为存在很多并发操作&#xff0c;因此需…

什么是企微文档?怎样搭建企微文档?

企微文档作为一种高效、便捷的协作工具&#xff0c;已经有越来越多企业的在使用。那么&#xff0c;什么是企微文档&#xff1f;我们又该如何高效搭建企微文档呢&#xff1f;这就是我们今天要来探讨的问题。 | 什么是企微文档 简单来说&#xff0c;企微文档就是企业微信平台上的…

FFmpeg: 自实现ijkplayer播放器--06封装打开和关闭stream

文章目录 流程图stream openstream close流程图 stream open 初始化SDL以允许⾳频输出;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_threadint FFPlayer::stream_open(const char

ASUS华硕ROG幻13笔记本电脑GV301R工厂模式原厂OEM预装Windows11系统,恢复出厂开箱状态

适用于型号&#xff1a;GV301RC、GV301RE、GV301RA 工厂模式安装包&#xff1a;https://pan.baidu.com/s/1gLme1VqidpUjCLocgm5ajQ?pwddnbk 提取码&#xff1a;dnbk 工厂模式Win11安装包带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志…

#新版Onenet云平台使用(ESP8266 AT指令上报数据以及公网MQTT服务器连接测试)

1.上云方式&#xff1a;MQTT 参考&#xff1a; 新版ONENET物联网开放平台ATMQTT指令连接_at指令连接onenet的mqtt-CSDN博客https://blog.csdn.net/lilbye/article/details/131770196 ESP8266-01s入门&#xff1a;AT指令讲解、上云与MQTT通信教程-物联沃-IOTWORD物联网https:…