windows安装使用node.js 安装express,suquelize,mysql,nodemon

系统是win10,默认已经安装好nodejs与npm

包名作用
expressWeb应用框架
suquelize数据库ORM
mysql数据库
nodemon代码热重载

安装express

  1. 添加express生成器
npm add express-generator@4`

在这里插入图片描述

  1. 安装express
npm add express 

在这里插入图片描述

  1. 创建项目
在当前项目创建express 文件
npx  express --no-view .创建项目初始化项目,项目名称是: projectName
npx  express --no-view projectName--no-view创建无视图项目

在这里插入图片描述

安装sequelize-cli与sequelize

  1. 安装sequelize-cli全局安装
全局安装
npm i -g sequelize-cli
或者本地
npm i  sequelize-cli

在这里插入图片描述

  1. 安装sequelize并初始化
npm install sequelize  
npx sequelize  init

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

mysql

本机安装

当然也是我写的
https://blog.csdn.net/GoodCooking/article/details/149616098

docker安装

复制docker-compose.yml

services:mysql:image: mysqlcontainer_name: my_mysqlrestart: unless-stoppedenvironment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: mydatabaseports:- "45326:3306"volumes:- ./mysql:/var/lib/mysql
在yml文件的同级运行命令
docker-compose up -d

在这里插入图片描述

命令解释
services:mysql:

定义了一个名为 mysql 的服务(容器)。

    image: mysql

使用官方 [MySQL Docker 镜像]

    container_name: my_mysql

将容器命名为 my_mysql(默认会生成随机名称,这里显式指定)。

    restart: unless-stopped
 `unless-stopped` 表示容器会自动重启,除非用户手动停止它。
environment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: mydatabase
  • MYSQL_ROOT_PASSWORD: 设置 MySQL root 用户的密码为 root(生产环境应使用更强的密码)。
  • MYSQL_DATABASE: 容器启动时自动创建名为 mydatabase 的数据库。
    ports:- "45326:3306"
-将主机的 `45326` 端口映射到容器的 `3306` 端口(MySQL 默认端口)。
  • 外部可通过 localhost:45326主机IP:45326 访问 MySQL。
    volumes:- ./mysql:/var/lib/mysql
  • 将主机的 ./mysql 目录挂载到容器的 /var/lib/mysql(MySQL 数据存储路径)。
    • 确保数据持久化,即使容器删除,数据仍保留在主机中。
建议运行位置

在这里插入图片描述在这里插入图片描述
clwy-api 是node的项目名称,里面有app.js
docker_File 存放docker文件

可视化创建数据库

如果使用的是docker则已经创建了一个数据库,名称是:mydatabase,如果本机安装则使用其他工具链接到数据库
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

有数据库
在这里插入图片描述
在这里插入图片描述

修改文件用于连接到数据库

修改config.config.json
在这里插入图片描述
安装mysql2

npm add mysql2

在这里插入图片描述
在models下的index.js 添加测试连接代码

'use strict';const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const process = require('process');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};let sequelize;
if (config.use_env_variable) {sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {sequelize = new Sequelize(config.database, config.username, config.password, config);
}// 添加连接测试
sequelize.authenticate().then(() => {console.log('MySQL 连接已成功建立');}).catch(err => {console.error('无法连接到 MySQL 数据库:', err);process.exit(1); // 如果连接失败,退出进程});fs.readdirSync(__dirname).filter(file => {return (file.indexOf('.') !== 0 &&file !== basename &&file.slice(-3) === '.js' &&file.indexOf('.test.js') === -1);}).forEach(file => {const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);db[model.name] = model;});Object.keys(db).forEach(modelName => {if (db[modelName].associate) {db[modelName].associate(db);}
});db.sequelize = sequelize;
db.Sequelize = Sequelize;module.exports = db;
  1. 打开app.js,在
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

上面添加
require('./models');

在这里插入图片描述

nodemon

  1. 安装nodemon
 npm install --save-dev nodemon

在这里插入图片描述

  1. 修改根目录package.json
根目录package.json修改:
"scripts": {"start": "node app.js","dev": "nodemon app.js","test": "echo \"Error: no test specified\" && exit 1"
}

在这里插入图片描述

  1. 启动程序
开发模式运行
npm run dev生产模式
npm start
  1. 访问
    在这里插入图片描述

  2. 修改返回文件,将index.html重命名为index2.html
    在这里插入图片描述

  3. 修改routes下的index.js

var express = require('express');
var router = express.Router();/* GET home page. */
router.get('/', function(req, res, next) {// res.render('index', { title: 'Express' });res.json({ "java": "script" });
});module.exports = router;

在这里插入图片描述

其他包

包名功能描述安装状态
expressWeb框架已安装
sequelizeORM数据库工具已安装
nodemon代码热重载已安装
sqlitesqlite支持已安装
bcryptjs密码加盐哈希未安装
dotenv环境变量管理未安装
jsonwebtokenJWT令牌生成未安装
moment时间日期处理未安装
cors跨域支持未安装
multer文件上传中间件未安装
svg-captcha图形验证码生成未安装
nodemailer邮件发送服务未安装
winston日志记录工具未安装
redisRedis客户端未安装
amqplibRabbitMQ客户端未安装

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

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

相关文章

VueCropper 图片裁剪组件在Vue项目中的实践应用

VueCropper 图片裁剪组件在Vue项目中的实践应用 1. 组件介绍 VueCropper 是一个基于 Vue.js 的图片裁剪组件,它提供了丰富的图片裁剪功能,包括: 图片缩放、旋转、移动固定比例裁剪高质量图片输出多种裁剪模式选择 2. 安装与引入 首先需要安装…

给同一个wordpress网站绑定多个域名的实现方法

在WordPress网站上绑定多个域名,可以通过以下几种方法实现: 1. 修改wp-config.php文件 在wp-config.php文件中,找到define(‘WP_DEBUG’, false);,在其下方添加以下代码: define(WP_SITEURL, http:// . $_SERVER[HT…

HarmonyOS分布式开发实战:打造跨设备协同应用

📖 文章目录 第一章:HarmonyOS分布式架构揭秘第二章:跨设备协同的核心技术第三章:开发环境搭建与配置第四章:实战项目:智能家居控制系统第五章:数据同步与状态管理第六章:性能优化与…

用 Enigma Virtual Box 把 Qt 程序压成单文件 EXE——从编译、收集依赖到一键封包

关键词:Qt、windeployqt、Enigma Virtual Box、单文件、绿色软件 为什么要打成单文件? 传统做法:用 windeployqt 把依赖拷进 release 目录,发给用户一个文件夹,文件又多又乱。理想做法:把整个目录压成一个…

unity中实现选中人物脚下显示圆形标识且完美贴合复杂地形(如弹坑) 的效果

要实现人物脚下圆形 完美贴合复杂地形(如弹坑) 的效果,核心思路是 「动态生成贴合地面的 Mesh」 —— 即根据地面的高度场实时计算环形顶点的 Y 坐标,让每个顶点都 “贴” 在地面上。核心逻辑:确定环形范围&#xff1a…

引领GameFi 2.0新范式:D.Plan携手顶级财经媒体启动“龙珠创意秀”

在GameFi赛道寻求新突破的今天,一个名为Dragonverse Plan(D.Plan)的项目正以其独特的经济模型和宏大愿景,吸引着整个Web3社区的目光。据悉,D.Plan即将联合中文区顶级加密媒体金色财经与非小号(Feixiaohao&a…

通信算法之307:fpga之时序图绘制

时序图绘制软件 一. 序言 在FPGA设计过程中,经常需要编写设计文档,其中,不可缺少的就是波形图的绘制,可以直接截取Vivado或者Modelsim平台实际仿真波形,但是往往由于信号杂乱无法凸显重点。因此,通过相应软…

计网学习笔记第3章 数据链路层(灰灰题库)

题目 11 单选题 下列说法正确的是______。 A. 路由器具有路由选择功能,交换机没有路由选择功能 B. 三层交换机具有路由选择功能,二层交换机没有路由选择功能 C. 三层交换机适合异构网络,二层交换机不适合异构网络 D. 路由器适合异构网络&…

SQL的LEFT JOIN优化

原sql,一个base表a,LEFT JOIN三个表抽数 SELECT ccu.*, ctr.*, om.*, of.* FROM ods.a ccu LEFT JOIN ods.b ctr ON ccu.coupon_code ctr.coupon_code AND ctr.is_deleted 0 LEFT JOIN ods.c om ON ctr.bill_code om.order_id AND om.deleted 0 LEFT JOIN ods.…

Redis 核心概念、命令详解与应用实践:从基础到分布式集成

目录 1. 认识 Redis 2. Redis 特性 2.1 操作内存 2.2 速度快 2.3 丰富的功能 2.4 简单稳定 2.5 客户端语言多 2.6 持久化 2.7 主从复制 2.8 高可用 和 分布式 2.9 单线程架构 2.9.1 引出单线程模型 2.9.2 单线程快的原因 2.10 Redis 和 MySQL 的特性对比 2.11 R…

【Day 18】Linux-DNS解析

目录 一、DNS概念 1、概念和作用 2、域名解析类型 3、 软件与服务 4、DNS核心概念 区域 记录 5、查询类型 6、分层结构 二、DNS操作 配置本机为DNS内网解析服务器 (1)修改主配置文件 (2)添加区域 正向解析区域: …

Python 中 OpenCV (cv2) 安装与使用介绍

Python 中 OpenCV (cv2) 安装与使用详细指南 OpenCV (Open Source Computer Vision Library) 是计算机视觉领域最流行的库之一。Python 通过 cv2 模块提供 OpenCV 的接口。 一、安装 OpenCV 方法 1:基础安装(推荐) # 安装核心包&#xff0…

微软WSUS替代方案

微软WSUS事件回顾2025年7月10日,微软最新确认Windows Server Update Services(WSUS)出现了问题,导致IT管理员无法正常同步和部署Windows更新。WSUS是允许管理员根据策略配置,将更新推送到特定计算机,并优化…

Minio 分布式集群安装配置

目录创建 mkdir -p /opt/minio/run && mkdir -p /etc/minio && mkdir -p /indata/disk_0/minio/datarun:启动脚本及二进制文件目录/etc/minio:配置文件目录data:数据存储目录下载 minio wget https://dl.min.io/server/minio…

Spring Boot + ShardingSphere 实现分库分表 + 读写分离实战

🚀 Spring Boot ShardingSphere 实现分库分表 读写分离(涵盖99%真实场景) 🏷️ 标签:ShardingSphere、分库分表、读写分离、MySQL 主从、Spring Boot 实战 分库分表 vs 读写分离 vs 主从配置与数据库高可用架构区别 …

将普通用户添加到 Docker 用户组

这样可以避免每次使用 Docker 命令时都需要 sudo。以下是具体步骤:1. 创建 Docker 用户组(如果尚未存在) 默认情况下,安装 Docker 时会自动创建 docker 用户组。可以通过以下命令检查: groupadd docker(如果…

Scrapy(一):轻松爬取图片网站内容​

目录 一、CrawlSpider 简介​ 二、实战案例:图片网站爬取​ 三、代码解析:核心组件详解​ 类定义: 2.核心属性:​ 3.爬取规则(Rules):​ 4.数据提取方法(parse_item)…

使用 systemd 的原生功能来实现 Redis 的自动监控和重启,而不是依赖额外的脚本最佳实践方案

使用 systemd 的原生功能来实现 Redis 的自动监控和重启,而不是依赖额外的脚本最佳实践方案方案 1:配置 systemd 服务文件(推荐)1. 检查/创建 Redis 的 systemd 服务文件2. 配置关键参数(覆盖配置示例)3. 重…

Eclipse 代码模板

Eclipse 代码模板 引言 Eclipse 作为一款功能强大的集成开发环境(IDE),深受广大开发者的喜爱。在编程过程中,使用代码模板可以大大提高开发效率,减少重复劳动。本文将详细介绍 Eclipse 代码模板的配置、使用方法以及一…

输电线路防外破声光预警装置 | 防山火/防钓鱼/防施工安全警示系统

在输电网络的安全保障中,外力破坏是一个不容忽视的问题,各类隐患可能对电力系统造成严重影响。TLKS-PMG-WP 输电线路声光防外破警示装置在应对这类挑战时,有着独特的技术表现,下面从功能和技术参数两方面进行详细介绍。核心功能解…