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

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

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

包名 作用
express Web应用框架
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

javascript 复制代码
'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"
    }
    }

  2. 打开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. 访问
  1. 修改返回文件,将index.html重命名为index2.html

  2. 修改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客户端 未安装