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.pswp.cn/pingmian/92061.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92061.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92061.shtml

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

相关文章

Cervantes:面向渗透测试人员和红队的开源协作平台

Cervantes 是一个专为渗透测试人员和红队打造的开源协作平台。它提供了一个集中式工作区,用于集中管理项目、客户端、漏洞和报告。通过简化数据组织和团队协调,它有助于减少规划和执行渗透测试所需的时间和复杂性。 作为 OWASP 旗下的开源解决方案&…

[Python 基础课程]猜数字游戏

使用 Python 实现一个猜数字游戏,先随机生成一个 1 到 100 之间的一个随机整数,让用户猜测这个数是什么,每次都提示用户猜大了还是猜小了,如果用户猜对了,提示用户猜对了,用了多少次,并且之前每…

文件加密实现

一、不依赖外部库实现 使用自定义的XOR加密算法结合简单的密钥扩展。 实现说明 这个方案不依赖任何外部库,仅使用C标准库实现: 加密原理:采用XOR加密算法,这是一种简单但有效的对称加密方式,相同的密钥可以用于加密和解…

Unity轻量观察相机

一、脚本功能简介ObserveCamera 是一个可直接挂载到任意 GameObject 上的通用摄像机控制脚本,支持以下功能:鼠标右键控制摄像机绕自身旋转(俯仰、水平)鼠标左键拖拽目标对象进行平移(局部 XY 平面移动)鼠标…

1深度学习Pytorch-pytorch、tensor的创建、属性、设备和类型转换、数据转换、常见操作(获取元素、元素运算、形状改变、相乘、广播)

文章目录PyTorchTensor1 Tensor 的创建1.torch.tensor2.torch.Tensor3. 线性张量4. 随机张量5. 特定数值的张量2 Tensor 常见属性1 属性2 设备切换3 类型转换torch.Tensor.to(dtype)类型专用方法创建张量时直接指定类型与 NumPy 数组的类型互转4 数据转换(浅拷贝与深…

五、Istio管理网格外部服务

因语雀与csdn markdown 格式有区别,请查看原文: https://www.yuque.com/dycloud/pss8ys 一、Egress Listener 流量策略 前面学习了 sidecar 自动注入原理、inbound Listener、outbound Listener 等概念,也知道了 EgressListener 的流量策略…

Ubuntu20.04 离线安装 FFmpeg 静态编译包

系统版本 Ubuntu20.04 去现场部署项目,发现现场的设备连接的内网,无法使用apt直接安装ffmpeg ,想解决也简单,数据线连接手机使用共享网络,再使用命令sudo apt install ffmpeg安装即可,奈何现场百多台设备&a…

C语言高级编程技巧与最佳实践

C语言高级编程技巧与最佳实践 - 完整版 目录 宏定义与预处理技巧内存管理高级技巧函数指针与回调机制数据结构设计并发与多线程错误处理与异常机制性能优化技巧调试与测试技巧跨平台编程安全编程实践综合演示示例 宏定义与预处理技巧 1. 条件编译与平台检测 /*** 平台和编译…

cygwin+php教程(swoole扩展+redis扩展)

cygwin 1.下载cygwin安装程序 :在Windows上获得Linux的感觉 ​ 2. 打开安装包:setup-x86_64.exe 3.选择安装类型 从互联网安装首次安装下载而不安装仅下载软件包不安装从本地目录安装迁移程序时使用 4.选择安装目录 5.选择本地软件包目录&#xff…

Ethereum: Uniswap V3核心”Tick”如何引爆DEX的流动性革命?

大家好,今天,我们来聊聊一个在去中心化交易所(DEX)领域,尤其是自Uniswap V3问世以来,变得至关重要的概念——Tick(流动性边界)。 如果大家接触过DeFi,可能听说过Uniswap …

【概念学习】什么是深度学习

人工智能 人工智能的简洁定义如下:努力将通常由人类完成的智力任务自动化。 因此,人工智能是一个综合性的领域,不仅包括机器学习与深度学习,还包括更多不涉及学习的方法。 在相当长的时间内,许多专家相信,只…

【MATLAB】(八)矩阵

一.矩阵的定义MATLAB 以矩阵作为数据操作的基本单位,这使得矩阵运算变得非常简捷、方便、高效。矩阵是由m*n个数q(i1,2,…,m;j1,2,…,n),排成的m行n列数表,记成称为 mxn 矩阵,也可以记成aij或Am*n。其中,i表示行数,j表…

python的高校考研交流系统

前端开发框架:vue.js 数据库 mysql 版本不限 后端语言框架支持: 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 数据库工具:Navicat/SQLyog等都可以 在当今社…

从零开始部署Qwen3-8b大模型到本地

一、方法一(使用docker镜像进行部署) 安装Linux服务器,本机测试系统为Ubuntu系统;(带有2张A100的GPU服务器) 思路为:使用docker部署python环境镜像在此基础上安装vllm拉取Qwen3-8b模型 docker-compose.yml文件部分配…

AI产品经理如何理解和应用Transformer架构,以提升产品的技术能力和用户体验?

​你好,我是 ✨三桥君✨ 助你迈向AGI时代!!! 📌本文介绍📌 >> 一、引言 在当今的AI浪潮中,Transformer架构已不再是一个陌生的技术名词。从OpenAI的GPT系列到Google的BERT,再…

数据结构(四)内核链表、栈与队列

一、内核链表基础1. 什么是 Linux 内核链表?Linux 内核链表是一种高效的 双向循环链表,广泛应用于内核模块开发中,用于管理数据结构。每个节点通过指针连接前一个和后一个元素,实现插入和删除的高性能。2. 链表的定义与初始化在 L…

软考信息安全工程师11月备考

目前是在职备考,主业是移动端开发工程师。第一个月(8.4-9.6),将分享完下面所有章节内容,平均不到两天更新一节1.网络信息安全概述2.网络攻击原理与常用方法3.密码学基本理论4.网络安全体系与网络安全模型5.物理与环境安全技术6.认证技术与原理…

使用DrissionPage实现xhs笔记自动翻页并爬取笔记视频、图片

使用DrissionPage实现xhs笔记自动翻页并爬取笔记视频、图片 声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经…

使用 input 上传文件, 选择文件后再次修改文件再上传失败( <input type=“file“ /> 自定义上传)

业务实际需求:点击【选择】按钮先选择文件,展示文件的详情:类型,大小,日期......点击【上传】按钮这个时候才去上传文件如图:BUG复现:点击上传文件后发现xlsx文件有些数据没填写,然后…

Win11 下解决 VScode/Trae 插件加载慢, 整个 VScode/Trae 很卡

最近在使用 Trae 写代码, 突然变得很卡, 尤其是插件系统, 比如我打开插件的面板, 以及比如我想预览一下写好的 .md 文件 (已安装了 Markdown Preview Enhanced 插件), 这些都要好几分钟才能打开. 最初以为是 Trae 坏掉了, 然后重启 Trae 不管用, 再重启电脑居然也不管用, 接着…