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应用程序。如果你有任何问题或建议,请在评论区留言。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OR36 链表的回文结构

描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。 测试样例: 1->…

Unity面经(自整)——移动开发与Shader

Unity与Android混合开发 为什么使用Flutter构建 Flutter 是 Google 的开源工具包,用于从单个代码库为移动、Web、桌面和嵌入式设备构建应用程序(一套代码跨平台构建app是它最大的优点),并且可以构建高性能、稳定和丰富UI的应用程…

Django Rest Framework的序列化和反序列化

DRF的序列化和反序列化 目录 DRF的序列化和反序列化Django传统序列化Django传统反序列化安装DRF序列化器serializers序列化反序列化反序列化保存instance和data CBV和APIView执行流程源码解析CBV源码分析APIView源码分析 DRF的Request解析魔法方法__getattr__ 什么是序列化&…

第十二届蓝桥杯大赛软件赛省赛Java 大学 B 组题解

1、ASC public class Main {public static void main(String[] args) {System.out.println(

dns服务的正反向解析

目的:完成DNS正反向解析,将步骤及测试同时提交 一、正向解析 1、准备工作 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld 2、服务端、客户端均安装软件 [rootserver ~]# yum install bind -y [rootnode1 ~]# yum install b…

扭蛋机小程序:线上扭蛋机模式发展空间有多大?

潮玩行业近几年的发展非常快,推动了扭蛋机市场的发展,越来越多的人加入到了扭蛋机赛道中,市场迎来了新的发展期。如今,我国的二次元文化的发展不断成熟,扭蛋机主打的二次元商品迎来了更多的商业机会。 一、互联网扭蛋机…

使用shell管理和配置网络服务_1

1、请使用nmcli命令配置仅主机模式网络环境,要求如下: 1) 创建一个新的网卡连接eth1,该连接映射到ens32网卡上; 首先,确保 ens32 网卡没有被其他网络配置文件使用。然后,使用 nmcli 创建一个新的连接,并将其绑定到 e…

在Spring Boot中使用POI完成一个excel报表导入数据到MySQL的功能

最近看了自己玩过的很多项目,忽然发现有一个在实际开发中我们经常用到的功能,但是我没有正儿八经的玩过这个功能,那就是在Spring Boot中实现一个excel报表的导入导出功能,这篇博客,主要是围绕excel报表数据导入进行&am…

分享一下项目中遇到的排序失效问题

今天把原来的一个查询接口的业务代码进行了优化&#xff0c;减少了十几行冗余的代码。 原来的代码 ChongwuServiceImpl.java /*** author heyunlin* version 1.0*/ Slf4j Service public class ChongwuServiceImpl implements ChongwuService {Overridepublic JsonResult<…

云原生数据库海山(He3DB)PostgreSQL版核心设计理念

本期深入解析云原生数据库海山PostgreSQL版&#xff08;以下简称“He3DB”&#xff09;的设计理念&#xff0c;探讨在设计云原生数据库过程中遇到的工程挑战&#xff0c;并展示He3DB如何有效地解决这些问题。 He3DB是移动云受到 Amazon Aurora 论文启发而独立自主设计的云原生数…

html+javascript,用date完成,距离某一天还有多少天

图片展示: html代码 如下: <style>* {margin: 0;padding: 0;}.time-item {width: 500px;height: 45px;margin: 0 auto;}.time-item strong {background: orange;color: #fff;line-height: 100px;font-size: 40px;font-family: Arial;padding: 0 10px;margin-right: 10px…

Day98:云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露

目录 云原生-K8s安全-etcd(Master-数据库)未授权访问 etcdV2版本利用 etcdV3版本利用 云原生-K8s安全-Dashboard(Master-web面板)未授权访问 云原生-K8s安全-Configfile鉴权文件泄漏 云原生-K8s安全-Kubectl Proxy不安全配置 知识点&#xff1a; 1、云原生-K8s安全-etcd未…

性能优化-02

uptime 依次显示当前时间、系统运行时间以及正在登录用户数&#xff0c;最后三个数字依次则是过去1分钟、5 分钟、15 分钟的平均负载(Load Average) 平均负载是指单位时间内&#xff0c;系统处于可运行状态和不可中断状态的平均进程数&#xff0c;也就是平均活跃进程数&#xf…

执行npm命令一直出现sill idealTree buildDeps怎么办?

一、问题 今天在运行npm时候一直出项sill idealTree buildDeps问题 二、 解决 1、网上查了一下&#xff0c;有网友说先删除用户界面下的npmrc文件&#xff08;注意一定是用户C:\Users\{账户}\下的.npmrc文件下不是nodejs里面&#xff09;&#xff0c;进入到对应目录下&#x…

golang实现定时监控 CLOSE_WAIT 连接的数量

文章目录 go实现定时检查大量的 CLOSE_WAIT 连接背景&#xff1a;为什么监控指定端口上的 CLOSE_WAIT 连接数量原因&#xff1a;什么是CLOSE_WAITgo实现定时检查大量的 CLOSE_WAIT 连接参考 go实现定时检查大量的 CLOSE_WAIT 连接 监控指定端口的连接状态&#xff0c;特别是关…

分类算法——KNN算法(二)

什么是K-近邻算法 1KNN原理 K Nearest Neighbor算法又叫KNN算法&#xff0c;这个算法是机器学习里面一个比较经典的算法&#xff0c;总体来说KNN算法是相对比较容易理解的算法。 定义 如果一个样本在特征空间中的k个最相似&#xff08;即特征空间中最邻近&#xff09;的样本…

搭建Python王国:初心者的武装指南

Python环境搭建与配置 进入编程世界的大门&#xff0c;选择了Python作为你的剑&#xff0c;那么接下来&#xff0c;你需要的是一把磨好的利剑——一个配置妥当的Python开发环境。本文将指引你完成这个必要的准备过程&#xff0c;从安装Python到选择合适的IDE&#xff0c;再到理…

性能升级,INDEMIND机器人AI Kit助力产业再蜕变

随着机器人进入到越来越多的生产生活场景中&#xff0c;作业任务和环境变得更加复杂&#xff0c;机器人需要更精准、更稳定、更智能、更灵敏的自主导航能力。 自主导航技术作为机器人技术的核心&#xff0c;虽然经过了多年发展&#xff0c;取得了长足进步&#xff0c;但在实践…

Linux/Tenten

Tenten Enumeration Nmap 扫描发现对外开放了22和80端口&#xff0c;使用nmap详细扫描这两个端口 ┌──(kali㉿kali)-[~/vegetable/HTB/Tenten] └─$ nmap -sC -sV -p 22,80 -oA nmap 10.10.10.10 Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-25 00:52 EST Nmap …

epic免费游戏在哪里领 epic免费游戏怎么领取 图文教程一看就会

Epic Games是一家位于美国北卡罗来纳州卡里的视频游戏和软件开发商&#xff0c;由Tim Sweeney于1991年创立。该公司最著名的作品包括《堡垒之夜》和虚幻引擎&#xff0c;后者是一种广泛用于游戏开发的商用游戏引擎。Epic Games在2020年和2024年分别与索尼和迪士尼达成财务合作及…