# 学习node **Repository Path**: zRainy/learn-node ## Basic Information - **Project Name**: 学习node - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 原生视频播放 Web 应用 基于 Next.js 和 SQLite 的单页原生视频播放应用。 ## 部署说明 ### 环境要求 - Node.js 18+ (推荐 Node.js 20) - 支持本地文件系统读写(因为使用 SQLite 单文件数据库) ### 本地运行 1. 安装依赖 ```bash npm install ``` 2. 初始化数据库与示例数据 ```bash npm run seed ``` 3. 启动开发服务器 ```bash npm run dev ``` 4. 访问页面(需要带上 `userId`) ``` http://localhost:3000/?userId=u1 ``` ### 部署建议 (Node + PM2 / Docker) 由于依赖 SQLite 进行持久化存储,不推荐部署在 Vercel 等 Serverless 平台。建议部署在传统 VPS 或 Docker 容器中。 #### 环境变量配置 - `SQLITE_DB_PATH`: 可选,自定义 SQLite 数据库文件路径。默认为项目目录下的 `data/app.db`。 #### 生产环境启动 ```bash npm run build npm start ``` 如果使用 Docker,请确保将数据目录挂载到宿主机以持久化数据库: ```bash docker run -p 3000:3000 -v /path/to/host/data:/app/data your-image-name ``` ## 初始化数据导入说明 本系统不提供后台管理或注册功能,所有用户和视频元数据需由外部导入至 SQLite 数据库中。 1. **放置视频文件**: 将视频文件放置在项目的 `public/media/` 目录下(或配置 Nginx 反向代理该路径)。 2. **写入数据库**: 你可以编写自定义脚本(参考 `scripts/seed.js`)或使用任何 SQLite 客户端连接到 `data/app.db`。 **注意**:`user` 表配置了只读触发器,程序内无法写入。你必须在导入数据前暂时禁用触发器,或直接通过原生 SQLite 客户端以管理员身份执行。 ```sql -- 示例导入语句 INSERT INTO user (id, username, watched_total_seconds) VALUES ('u1', '测试用户', 0); INSERT INTO video (id, title, file_path, duration_seconds, sort_weight) VALUES ('v1', '第一集', '/media/v1.mp4', 120, 1); ```