windows安装使用node.js 安装express,suquelize,mysql,nodemon
系统是win10,默认已经安装好nodejs与npm
| 包名 | 作用 |
|---|---|
| express | Web应用框架 |
| suquelize | 数据库ORM |
| mysql | 数据库 |
| nodemon | 代码热重载 |
安装express
- 添加express生成器
npm add express-generator@4

- 安装express
npm add express

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

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

- 安装sequelize并初始化
npm install sequelize
npx sequelize init


mysql
本机安装
当然也是我写的
https://blog.youkuaiyun.com/GoodCooking/article/details/149616098
docker安装
复制docker-compose.yml
services:
mysql:
image: mysql
container_name: my_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydatabase
ports:
- "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: root
MYSQL_DATABASE: mydatabase
MYSQL_ROOT_PASSWORD: 设置 MySQLroot用户的密码为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;
- 打开app.js,在
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
上面添加
require('./models');

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

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

- 启动程序
开发模式运行
npm run dev
生产模式
npm start
-
访问

-
修改返回文件,将index.html重命名为index2.html

-
修改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;

其他包
| 包名 | 功能描述 | 安装状态 |
|---|---|---|
| express | Web框架 | 已安装 |
| sequelize | ORM数据库工具 | 已安装 |
| nodemon | 代码热重载 | 已安装 |
| sqlite | sqlite支持 | 已安装 |
| bcryptjs | 密码加盐哈希 | 未安装 |
| dotenv | 环境变量管理 | 未安装 |
| jsonwebtoken | JWT令牌生成 | 未安装 |
| moment | 时间日期处理 | 未安装 |
| cors | 跨域支持 | 未安装 |
| multer | 文件上传中间件 | 未安装 |
| svg-captcha | 图形验证码生成 | 未安装 |
| nodemailer | 邮件发送服务 | 未安装 |
| winston | 日志记录工具 | 未安装 |
| redis | Redis客户端 | 未安装 |
| amqplib | RabbitMQ客户端 | 未安装 |

被折叠的 条评论
为什么被折叠?



