windows安装使用node.js 安装express,suquelize,sqlite
系统是win10,默认已经安装好nodejs与npm
包名 | 作用 |
---|---|
express | Web应用框架 |
suquelize | 数据库ORM |
sqlite | 数据库 |
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
sqlite
- 下载sqlite包,解压后在解压目录运行,会创建
testdb_1.db
数据库
解压拷贝到新的文件夹
- 生成数据库
.\sqlite3.exe testdb_1.db
.databases
然后按两次ctrl+C退出
- 安装数据库sqlie
npm install sqlite3@5.0.0
复制
testdb_1.db
文件app.js同级目录,创建db放到里面。
修改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;
- 修改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"
}
}
- 打开app.js,在
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
上面添加
require('./models');
- 在最后添加
// 启动服务器
const PORT=3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
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
- 访问
5. 修改返回文件,将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客户端 | 未安装 |