当前位置: 首页 > news >正文

NodeJs学习日志(1):windows安装使用node.js 安装express,suquelize,sqlite,nodemon

windows安装使用node.js 安装express,suquelize,sqlite

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

包名作用
expressWeb应用框架
suquelize数据库ORM
sqlite数据库
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

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

sqlite

  1. 下载sqlite包,解压后在解压目录运行,会创建 testdb_1.db 数据库

在这里插入图片描述

解压拷贝到新的文件夹
在这里插入图片描述

  1. 生成数据库
 .\sqlite3.exe testdb_1.db.databases

然后按两次ctrl+C退出

在这里插入图片描述

  1. 安装数据库sqlie
npm install sqlite3@5.0.0

在这里插入图片描述

  1. 复制testdb_1.db文件app.js同级目录,创建db放到里面。
    在这里插入图片描述

  2. 修改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);
// }let sequelize;
if (config.use_env_variable) {sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {sequelize = new Sequelize({dialect: 'sqlite',storage: config.storage, // 确保config.json中有storage字段logging: console.log // 显示SQL日志});
}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;// 替换原来的 testConnection
const testConnection = async () => {try {await sequelize.authenticate();console.log('✅ 数据库连接成功');console.log(`📁 数据库文件: ${path.resolve(config.storage)}`);// 验证文件是否存在if (fs.existsSync(path.resolve(config.storage))) {console.log('🔍 数据库文件已创建');} else {console.log('⚠️ 注意:数据库文件尚未生成,将在首次操作时创建');}} catch (error) {console.error('❌ 连接失败:', error.message);process.exit(1); // 退出进程}
};// 立即调用并处理Promise
testConnection().catch(err => console.error('Unhandled error:', err));module.exports = db;
  1. 修改config文件,路径在app.js同级的config/config.js
    "storage": "./db/testdb_1.db"为数据库路径和名称
    "database": "testdb_1" , 是数据库名称
    这里仅修改开发环境,其他环境根据实际修改
    在这里插入图片描述
修改config.js,注意路径
{"development": {"username": "root","password": null,"database": "testdb_1","dialect": "sqlite","host": "127.0.0.1","storage": "./db/testdb_1.db"},"test": {"username": "root","password": null,"database": "database_test","host": "127.0.0.1","dialect": "mysql"},"production": {"username": "root","password": null,"database": "database_production","host": "127.0.0.1","dialect": "mysql"}
}
  1. 打开app.js,在
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

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

  1. 在最后添加
// 启动服务器
const PORT=3000;
app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});

在这里插入图片描述

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. 访问

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

  1. 修改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.xdnf.cn/news/1251433.html

相关文章:

  • 基于Hadoop的股票大数据分析可视化及多模型的股票预测研究与实现
  • 笔试——Day30
  • 如何快速掌握大数据技术?大四学生用Spark和Python构建直肠癌数据分析与可视化系统
  • 【数据结构与算法-Day 12】深入浅出栈:从“后进先出”原理到数组与链表双实现
  • 开疆智能ModbusTCP转Profinet网关连接EPSON机器人配置案例
  • Gitlab+Jenkins+K8S+Registry 建立 CI/CD 流水线
  • MATLAB深度学习之数据集-数据库构建方法详解
  • 无人机开发分享——基于行为树的无人机集群机载自主决策算法框架搭建及开发
  • 2025国赛数学建模C题详细思路模型代码获取,备战国赛算法解析——决策树
  • 信息安全概述
  • Dart中回调函数的简单实现
  • NY112NY117美光固态闪存NY119NY123
  • C++之vector类的代码及其逻辑详解 (下)
  • 【Excel】通过Index函数向下拖动单元格并【重复引用/循环引用】数据源
  • 【Linux】调试器gdb/cgdb的使用
  • 推荐一款优质的开源博客与内容管理系统
  • Android PDFBox 的使用指南
  • 【数据结构与算法】刷题篇——环形链表的约瑟夫问题
  • 8.6笔记
  • 93、【OS】【Nuttx】【构建】cmake menuconfig 目标
  • vxe-table表格编辑单元格,进行正则验证,不符合验证,清空单元格数据。
  • 【“连亏十年” 川机器人,启动科创板IPO辅导】
  • 短剧小程序系统开发:技术驱动下的内容创新之路
  • 后端服务oom
  • [linux] Linux系统中断机制详解及用户空间中断使用方法
  • Java技术栈/面试题合集(19)-架构设计篇
  • Android—服务+通知=>前台服务
  • 简单spring boot项目,之前练习的,现在好像没有达到效果
  • 攻防世界WEB(新手模式)20-unseping
  • Android14的QS面板的加载解析