Node.js+Express+Mysql服务添加环境变量

本文介绍了如何在Node.js项目中通过dotenv插件管理和加载不同环境的配置文件,包括安装dotenv插件、配置.env文件、在package.json中的运行命令中设置环境变量以及在app.js中访问这些环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、使用dotenv插件

1)安装插件:npm install dotenv-cli --save-dev

2)在项目根目录下添加对应的 .env 配置文件;

在这里插入图片描述

// .env配置文件内容,末尾有逗号
MODE='development',
BASE_URL='http://127.0.0.1:8081'

3) 在启动命令中设置对应的加载文件:dotenv -e .env.xxxx

// package.json文件
...
  "scripts": {
    "nodemon-serve": "nodemon app.js",
    "nodemon-serve:test": "dotenv -e .env.test nodemon app.js",
    "nodemon-serve:prod": "dotenv -e .env.production nodemon app.js",
    "serve": "dotenv -e .env.production nodemon app.js",
    "serve:local": "node app.js",
    ...
  }

4)在入口文件app.js中引入dotenv插件,并加载默认配置文件

// app.js文件
...
// 默认加载的是.env文件
require('dotenv').config();

// 使用 process.env.xxx 访问配置文件中对应key的内容
console.log('BASE_URL:', process.env.BASE_URL);
console.log('MODE:', process.env.MODE);
  • 注意:如果配置文件末尾加了逗号,打印出的内容会有多余的信息;如下所示:
    在这里插入图片描述
  • .env配置文件去掉末尾的逗号
// .env文件,末尾没有逗号
MODE='development'
BASE_URL='http://127.0.0.1:8081'
  • 打印信息如下:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、在package.json文件的运行命令中设置NODE_ENV环境变量,根据环境变量的值读取对应的配置文件

// package.json文件
...
"scripts": {
    "nodemon-serve": "set NODE_ENV=development && nodemon app.js",
    "nodemon-serve:test": "set NODE_ENV=test && nodemon app.js",
    "nodemon-serve:prod": "set NODE_ENV=production && nodemon app.js",
 }

2)通过process.env.NODE_ENV访问设置的环境变量

// app.js文件
...
console.log('NODE_ENV:', process.env.NODE_ENV.trim());

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

### 使用 Node.jsExpress 框架连接到 MySQL 数据库 为了实现通过 Node.jsExpress 框架安全地连接并操作 MySQL 数据库,以下是详细的说明: #### 安装必要的依赖项 在项目中需要引入 `mysql` 或更现代的替代品如 `mysql2` 模块来处理数据库交互。可以通过修改项目的 `package.json` 文件或者直接运行命令安装模块。 ```json { "dependencies": { "express": "^4.17.1", "mysql2": "^2.3.3" } } ``` 上述配置展示了如何定义所需的依赖关系[^2]。如果尚未初始化 npm,则应先执行以下命令以创建新的 `package.json` 文件: ```bash npm init -y ``` 接着安装所需模块: ```bash npm install mysql2 express ``` #### 创建基本服务器结构 构建基础 Web 应用程序通常涉及设置 HTTP 请求监听器以及路由处理器逻辑。下面是一个简单的例子展示如何启动基于 Express服务端应用: ```javascript const express = require('express'); const app = express(); app.use(express.json()); // Middleware to parse JSON bodies // Define port number where server will listen on localhost interface. const PORT = process.env.PORT || 3000; // Start listening for incoming requests at specified address & port combination. app.listen(PORT, () => console.log(`Server running on ${PORT}`)); ``` 这段脚本设置了Express实例,并使其能够接收JSON格式的数据输入;同时指定了默认的服务端口为3000[^4]。 #### 配置MySQL连接池 对于高效管理和重用多个并发客户端之间的单一持久化链接资源而言,“Connection Pooling”技术非常有用。这里提供了一个示例演示怎样建立这样的机制: ```javascript const mysql = require('mysql2/promise'); async function createPool() { const pool = await mysql.createPool({ host: 'localhost', user: 'root', password: '', database: 'testdb' }); return pool; } module.exports = {createPool}; ``` 上面的方法利用了 promise 版本的 mysql2 来异步返回一个预设参数后的 connection pool 实体对象。注意替换实际生产环境中的敏感信息比如用户名密码等字段前缀! #### 执行查询语句 当有了活动状态下的pool之后就可以方便快捷地发起各种类型的SQL指令请求啦~ 下面给出了一种方式用来检索特定条件满足的一条记录数据样本代码片段如下所示 : ```javascript router.get('/:id', async(req,res)=>{ try{ let id=req.params.id ; const [rows]=await db.execute( "SELECT * FROM users WHERE id=? ",[id]); res.send(rows); }catch(err){ res.status(500).send({error:"An error occurred"}); } }); ``` 在此处我们采用了占位符 ? 形式的绑定变量方法从而有效防止可能存在的sql注入攻击风险问题发生情况出现哦!另外记得捕获异常以便于及时反馈错误消息给前端调用者知道具体原因所在之处哈??[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wen_文文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值