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.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
: 設置 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客戶端 | 未安裝 |