Node.js,多环境配置

news2024/9/25 3:21:05

目录

1、多环境简介

2、多环境配置

3、命令运行


1、多环境简介

在前端项目的开发过程中,我们需要把项目发布到不同服务器环境中,例如,测试,生产,开发,预生产等环境。在这个我们需要对不同的环境设置不同的属性或者配置,例如,生产环境,IP地址为123.66.11.33,而测试环境的IP地址为123.65.10.22,那这样我们需要事先定义好对应的IP地址,在打包过程中动态去加载对应的地址。这样就不要每次发布到不同环境,来回手动去改IP地址了。当然还有其他的打包配置。

2、多环境配置

Node.js假设它总是在生成环境中运行。通过设置Node_ENV=production,可以在生产环境向Node.js发出运行的信号。

这通常是通过执行命令来完成的

export NODE_ENV=production

在shell中,但最好将其放在shell配置文件中(例如带有bash shell的.bash_profile),因为否则在系统重新启动时,该设置将不会持久存在。

您也可以通过将环境变量前置到应用程序初始化命令中来应用环境变量:

NODE_ENV=production node app.js

这个环境变量也是一个在外部库中广泛使用的约定。

或者,我们可以创建配置的目录,为不同环境配置对应的属性。例如:pro.env.js

/**
 * @description  生产环境下的接口地址配置
 * @author jiang
 */
module.exports = {
    NODE_ENV: '"production"',
    API_ROOT: '"http://172.18.0.14:8080/vds/"', 
    API_SSO: '"http://172.18.0.14:8080/sso2/"', // sso
    INDEX: '"http://172.18.0.14:8080/healthdegre-page/main.html"',  // 系统首页
    SYSTEM_NAME: '"health"'  // 系统名称
};

将环境设置为生产环境通常可以确保:

  • 日志记录保持在最低、基本的水平
  • 需要更多的缓存级别来优化性能

例如,如果NODE_ENV未设置为生产,Express使用的模板库Pug将在调试模式下编译。在开发模式下,Express视图会在每个请求中编译,而在生产模式下,它们会被缓存。还有更多的例子。

您可以使用条件语句在不同的环境中执行代码:

if (process.env.NODE_ENV === 'development') {
			// ...
}
if (process.env.NODE_ENV === 'production') {
			// ...
}
if (['production', 'staging'].includes(process.env.NODE_ENV)) {
			// ...
}

例如,在Express应用程序中,您可以使用它为每个环境设置不同的错误处理程序:

if () {
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
}
if (process.env.NODE_ENV === 'production') {
    app.use(express.errorHandler());
}

在实际项目开发过程中,我们更倾向于针对不同的环境,分别用一个文件来设置当前环境独有的配置信息。这样在目录这个层级中,我们就知道对应配置文件的作用是什么。

或者还有其他环境配置:

process.env.NODE_ENV === 'test' // 测试环境

process.env.NODE_ENV === 'pre-production' // 预生产环境,或者用 === 'staging'

在package.json 脚本运行任务,可以配置进行对应的配置。

  "scripts": {
    "dev": "node --max_old_space_size=4096 build/dev-server.js",
    "build": "cross-env NODE_ENV=production node build/build.js",
    "staging": "cross-env NODE_ENV=staging node build/build.js",
    "dll": "webpack --config build/webpack.dll.config.js",
    "test": "cross-env NODE_ENV=test_env node build/build.js"
  },

3、命令运行

例如,我们可以shell中运行 npm run build,如下如所示:

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

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

相关文章

函数的运用

函数的运用 一、函数的定义二、简单函数实验两个数字的运算:调用位置变量函数变量的作用范围 三、函数的递归阶乘递归目录 四、函数库 一、函数的定义 shell函数是经常使用的,因为有些命令序列是需要反复调用执行的,将命令序列按格式写在一起…

三分钟教你Mac下安装VmWare虚拟机

大数据课程课前环境准备:mac中安装三台linux服务器 一、课前准备 准备一台内存最少8G(建议16G)、cpu i7 4核的电脑 二、课堂主题 安装虚拟化软件VMware准备3台linux虚拟机 三、课堂目标 完成mac下3个虚拟机的安装 四、知识要点 文档说…

洗稿用什么软件-洗稿软件免费

洗稿文章的主要优势 洗稿文章的主要优势在于提高文章的质量和效率。以下是洗稿文章的几个主要优势: 优化结构和语言 洗稿可以删除冗余、无用和重复的内容,同时对文章的结构和语言进行优化,提高文章的可读性和吸引力。这可以使文章更加专业…

探索自然语言处理领域的最新进展与挑战

自然语言处理(NLP)是人工智能领域中最受关注的领域之一,它涉及计算机和人类语言之间的交互。NLP的应用范围非常广泛,包括机器翻译、语音识别、文本分类、情感分析等等。本文将介绍NLP的基本概念和入门知识,以帮助初学者…

一键安装k8s脚本

服务器配置 节点(华为云服务器)配置master 2vCPUs | 4GiB | s6.large.2 CentOS 7.8 64bit node1 2vCPUs | 8GiB | s6.large.4 CentOS 7.8 64bit node2 2vCPUs | 8GiB | s6.large.4 CentOS 7.8 64bit 1.master节点安装脚本:install_k8s_master.sh。 sh文件上传到…

Windows基于Docker安装Elasticsearch和 kibana笔记

Windows基于Docker安装Elasticsearch和 kibana笔记 一、Windows安装Docker1、Windows安装Docker要求2、Docker安装 二、基于Docker安装Elasticsearch1、安装Elasticsearch2、Elasticsearch的XPACK验证2.1、什么是Xpack2.2、Xpack相关安全配置介绍2.2.1、xpack.security.enabled…

系统分析师之系统测试与维护(十六)

目录 一、 测试与评审 1.1 测试类型 1.2 测试阶段 1.3 面向对象的测试 1.4 测试自动化 1.5 软件调试 1.6 软件评审 1.7 验收与确认 二、软件质量管理 2.1 软件过程改进-CMMI 2.2 软件开发环境与工具 三、系统运行与评价 3.1 系统转换计划 3.1.1 遗留系统演化策略…

C++——C/C++内存管理

0.关注博主有更多知识 C知识合集 目录 1.C/C内存分布 2.C内存管理方式 2.1new和delete操作内置类型 2.2new和delete对自定义类型操作 2.3new和delete一定要配套使用 2.4new和malloc对错误的处理方式 3.operator new和operator delete函数 3.1new和delete的实现原理 …

如何实现PLC为主站的开关量自组网无线通信?

本方案是基于Modbus RTU协议下实现的1主多从自组网无线通信形式,主站为S7-1200 PLC,DTD433H作为从站。DTD433H具备输入和输出开关量信号功能,信号传输方向由用户原系统主从设备所实现的功能决定。方案中采用无线开关量信号测控终端DTD433H与欧…

JAVA+SpringBoot框架+SaaS模式云HIS源码

HIS分系统(HIS子系统) 1、医院业务子系统功能 ▶门诊医生站主模块:包括门诊业务、家庭医生、公共卫生、医疗协同等子模块 (1)门诊业务功能简介: ①统计门诊收费明细、用药情况; ②可管理患…

UOS获取ROOT权限

UOS获取ROOT权限 1. 设置里可以看到开发者选项2. 设置里无法看到开发者选项 1. 设置里可以看到开发者选项 这个就按照网上的流程申请就好了 2. 设置里无法看到开发者选项 一般而言就是系统被修改过了,或者定制化了,可以通过下载一个uos的正常镜像来获…

维也纳国际酒店11家门店陆续开业,加速布局中高端酒店市场

2023年,中国旅游业迎来飞速复苏。据弗若斯特沙利文报告预计,2021至2025年,中高端连锁酒店将是整个酒店行业增长最快的细分市场。如何抓住市场复苏和行业增长双重机遇,成为酒店投资者和从业者面临的重要课题。 过去几年里&#xff…

基础语法——笔记一

一、基础语法 编码 源码文件以UTF-8编码,所有字符串都是Unicode字符串标识符 第一个字符必须是字母表中的字母或下划线_ 标识符的其他部分由字母、数字、下划线组成 标识符对大小写敏感python保留字(关键字) 不能用于任何标识符输出python标…

【Redis高级应用】多级缓存

文章目录 什么是多级缓存JVM进程缓存初识Caffeine实现JVM进程缓存需求实现 Lua语法入门初识LuaHelloWorld变量和循环Lua的数据类型声明变量循环 条件控制、函数函数条件控制案例 实现多级缓存安装OpenRestyOpenResty快速入门反向代理流程OpenResty监听请求编写item.lua 请求参数…

ES+Redis+MySQL,这个高可用架构设计太顶了

会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。 一、背景 二…

【最终截稿 | Springer 独立出版 | EI稳定检索】 2023年绿色建筑国际会议(ICoGB 2023)

会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org ICoGB 2023将围绕“绿色建筑”的最新研究领域而展开,为研究人员、工程师、专家学…

进程(一)

进程(一) 2.1 进程的定义、组成、组织方式、特征2.1.1 定义2.1.2 组成2.1.3 组织方式2.1.4 特征2.1.5 本小节总结 2.2 进程的状态与转换2.2.1 进程的状态2.2.3 进程状态的转换2.2.4 本小节总结 2.3 进程控制2.3.1 基本概念2.3.2 进程控制相关的原语2.3.3…

BetaFlight Mark4之“妖怪”声音

BetaFlight Mark4之“妖怪”声音 1. 源由2. 分析3. 数据3.1 配置一3.1.1 “妖怪”声音 黑匣子分析 3.2 配置二3.2.1 仅配置调整(其他不变)3.2.2 配置调整 整体螺丝锁紧 4. 总结5. 附录5.1 Betaflight filter tuning. The easy way to get a perfect fil…

防雷接地网施工综合方案

防雷接地网是一种用于防止雷击的重要设施,其主要作用是将雷电击中建筑物或设备后的电流引入地下,以保护人员和设备的安全。防雷接地网的施工方案是非常重要的,它直接关系到工程质量和安全。 防雷接地网的施工方案需要考虑很多因素&#xff0…

第四十八章 Unity 布局(下)

本章节我们介绍网格布局组 (Grid Layout Group)组件。 我们新建一个“SampleScene5.unity”场景,然后添加Panel面板容器(居中且尺寸为300*300),然后为其添加Grid Layout Group 组件,如下所示 Padding 布局组边缘内的…