《60天AI学习计划启动 | Day 02: Node.js 环境搭建与基础》
Day 02: Node.js 环境搭建与基础
📋 学习目标
🎯 核心学习内容
1. Node.js 简介
什么是 Node.js?
- 基于 Chrome V8 引擎的 JavaScript 运行时
- 让 JavaScript 可以在服务器端运行
- 事件驱动、非阻塞 I/O
为什么选择 Node.js?
- 与前端技术栈一致(JavaScript)
- 生态丰富(npm 包多)
- 适合 AI 应用开发(异步处理)
版本选择:
- 推荐 LTS(长期支持版)
- 当前推荐:Node.js 18.x 或 20.x
- 使用 nvm 管理多版本
2. 环境安装
Windows 安装:
# 1. 下载安装包
访问 nodejs.org 下载 LTS 版本
# 2. 验证安装
node -v
npm -v
# 3. 配置镜像(可选,加速下载)
npm config set registry https://registry.npmmirror.com
使用 nvm 管理版本(推荐):
# Windows: 使用 nvm-windows
# 下载:github.com/coreybutler/nvm-windows
# 安装 Node.js
nvm install 18.17.0
nvm use 18.17.0
# 查看已安装版本
nvm list
3. npm 包管理基础
核心命令:
# 初始化项目
npm init -y
# 安装依赖
npm install package-name # 生产依赖
npm install -D package-name # 开发依赖
npm install -g package-name # 全局安装
# 查看依赖
npm list
npm list --depth=0
# 更新依赖
npm update
npm outdated
# 卸载依赖
npm uninstall package-name
# 运行脚本
npm run script-name
package.json 说明:
{
"name": "ai-frontend-project",
"version": "1.0.0",
"description": "AI学习项目",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "node --watch index.js"
},
"dependencies": {
"openai": "^4.0.0"
},
"devDependencies": {
"nodemon": "^3.0.0"
}
}
4. Node.js 核心模块
fs 模块(文件系统):
const fs = require('fs').promises;
// 异步读取文件
async function readFile() {
try {
const data = await fs.readFile('test.txt', 'utf-8');
console.log(data);
} catch (error) {
console.error('读取失败:', error);
}
}
path 模块(路径处理):
const path = require('path');
// 路径拼接
const filePath = path.join(__dirname, 'data', 'test.json');
console.log(filePath); // /project/data/test.json
// 获取文件名
const fileName = path.basename(filePath);
console.log(fileName); // test.json
// 获取扩展名
const ext = path.extname(filePath);
console.log(ext); // .json
http 模块(HTTP 服务器):
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello Node.js!');
});
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
process 模块(进程信息):
// 环境变量
console.log(process.env.NODE_ENV);
// 命令行参数
console.log(process.argv);
// 退出进程
process.exit(0);
5. 环境变量管理
使用 dotenv:
npm install dotenv
创建 .env 文件:
# .env
NODE_ENV=development
OPENAI_API_KEY=sk-your-api-key-here
PORT=3000
使用环境变量:
require('dotenv').config();
console.log(process.env.OPENAI_API_KEY);
console.log(process.env.PORT);
⚠️ 注意事项:
.env文件不要提交到 Git- 添加到
.gitignore - 使用
.env.example作为模板
🏗️ 实践作业
作业1:创建项目结构
项目结构:
ai-frontend-project/
├── .env # 环境变量(不提交)
├── .env.example # 环境变量模板
├── .gitignore # Git忽略文件
├── package.json # 项目配置
├── README.md # 项目说明
├── src/ # 源代码目录
│ ├── index.js # 入口文件
│ ├── api/ # API相关
│ │ └── openai.js
│ └── utils/ # 工具函数
│ └── logger.js
└── test/ # 测试文件
└── api.test.js
创建步骤:
# 1. 创建项目目录
mkdir ai-frontend-project
cd ai-frontend-project
# 2. 初始化项目
npm init -y
# 3. 安装基础依赖
npm install openai axios dotenv
# 4. 安装开发依赖
npm install -D nodemon
# 5. 创建目录结构
mkdir src src/api src/utils test
作业2:配置 package.json
修改 package.json:
{
"name": "ai-frontend-project",
"version": "1.0.0",
"description": "AI学习项目 - 前端开发者的AI转型之路",
"main": "src/index.js",
"type": "module",
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": ["ai", "openai", "frontend"],
"author": "你的名字",
"license": "MIT",
"dependencies": {
"openai": "^4.20.0",
"axios": "^1.6.0",
"dotenv": "^16.3.1"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}
作业3:创建环境变量配置
.env.example:
# OpenAI API配置
OPENAI_API_KEY=your-api-key-here
# 服务器配置
PORT=3000
NODE_ENV=development
# 其他配置
LOG_LEVEL=info
.gitignore:
# 依赖
node_modules/
# 环境变量
.env
.env.local
# 日志
*.log
logs/
# 系统文件
.DS_Store
Thumbs.db
# IDE
.vscode/
.idea/
*.swp
作业4:创建基础文件
src/index.js:
import 'dotenv/config';
import { testOpenAI } from './api/openai.js';
import { logger } from './utils/logger.js';
async function main() {
logger.info('🚀 AI项目启动');
logger.info(`环境: ${process.env.NODE_ENV}`);
// 检查环境变量
if (!process.env.OPENAI_API_KEY) {
logger.error('❌ 未找到 OPENAI_API_KEY,请检查 .env 文件');
process.exit(1);
}
// 测试 OpenAI API
await testOpenAI();
}
main().catch(error => {
logger.error('程序异常:', error);
process.exit(1);
});
src/api/openai.js:
import OpenAI from 'openai';
import { logger } from '../utils/logger.js';
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
export async function testOpenAI() {
try {
logger.info('📡 测试 OpenAI API...');
const completion = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content: "你是一个友好的AI助手"
},
{
role: "user",
content: "用一句话介绍Node.js"
}
],
temperature: 0.7
});
const response = completion.choices[0].message.content;
const usage = completion.usage;
logger.success('✅ API调用成功');
logger.info(`回复: ${response}`);
logger.info(`Token使用: ${JSON.stringify(usage)}`);
return { response, usage };
} catch (error) {
logger.error('❌ API调用失败:', error.message);
throw error;
}
}
src/utils/logger.js:
const colors = {
reset: '\x1b[0m',
red: '\x1b[31m',
green: '\x1b[32m',
yellow: '\x1b[33m',
blue: '\x1b[34m',
cyan: '\x1b[36m'
};
export const logger = {
info: (msg, ...args) => {
console.log(`${colors.cyan}[INFO]${colors.reset}`, msg, ...args);
},
success: (msg, ...args) => {
console.log(`${colors.green}[SUCCESS]${colors.reset}`, msg, ...args);
},
error: (msg, ...args) => {
console.error(`${colors.red}[ERROR]${colors.reset}`, msg, ...args);
},
warn: (msg, ...args) => {
console.warn(`${colors.yellow}[WARN]${colors.reset}`, msg, ...args);
}
};
README.md:
# AI Frontend Project
AI学习项目 - 前端开发者的AI转型之路
## 项目结构
ai-frontend-project/
├── src/ # 源代码
├── test/ # 测试文件
└── .env # 环境变量(不提交)
## 快速开始
1. 安装依赖
```bash
npm install
-
配置环境变量
cp .env.example .env # 编辑 .env 文件,填入你的 API Key -
运行项目
npm start # 或开发模式(自动重启) npm run dev
学习进度
---
### 作业5:测试运行
**运行测试:**
```bash
# 开发模式运行
npm run dev
# 预期输出
[INFO] 🚀 AI项目启动
[INFO] 环境: development
[INFO] 📡 测试 OpenAI API...
[SUCCESS] ✅ API调用成功
[INFO] 回复: Node.js是一个基于Chrome V8引擎的JavaScript运行时...
[INFO] Token使用: {"prompt_tokens":20,"completion_tokens":30,"total_tokens":50}
⚠️ 遇到的问题
问题1:npm install 很慢
解决方案:
# 使用国内镜像
npm config set registry https://registry.npmmirror.com
# 或使用 cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm install
问题2:ES Module vs CommonJS
问题: Cannot use import statement outside a module
解决方案:
// package.json 添加
{
"type": "module"
}
// 或使用 .mjs 扩展名
// 或使用 CommonJS (require/module.exports)
问题3:环境变量未加载
问题: process.env.OPENAI_API_KEY 为 undefined
解决方案:
// 确保在文件开头导入
import 'dotenv/config';
// 或
import dotenv from 'dotenv';
dotenv.config();
📊 学习总结
今日收获
✅ 成功搭建 Node.js 开发环境
✅ 掌握 npm 包管理基础
✅ 理解 Node.js 核心模块
✅ 创建完整的项目结构
✅ 配置环境变量管理
关键知识点
- Node.js 是 JavaScript 运行时,让 JS 可以在服务器运行
- npm 是包管理器,管理项目依赖
- 环境变量很重要,保护敏感信息
- 项目结构要清晰,便于维护和扩展
前端开发者的优势
✅ 熟悉 JavaScript,学习成本低
✅ 理解异步编程(Promise/async-await)
✅ 熟悉模块化开发(import/export)
✅ 可以直接复用前端技能
项目结构设计思路
src/ # 源代码集中管理
api/ # API相关功能模块化
utils/ # 工具函数复用
test/ # 测试文件分离
📅 明日计划
明天将学习:
期待明天的学习! 🚀
📚 参考资源
💻 代码仓库
项目已同步到 GitHub:
- 仓库地址:[你的GitHub链接]
- 今日提交:Day 02 - Node.js环境搭建
标签: #AI学习 #Node.js #npm #环境搭建 #学习笔记
💭 写在最后
今天完成了 Node.js 环境的搭建,虽然内容基础,但为后续的 AI 应用开发打下了坚实基础。项目结构已经搭建好,明天就可以开始创建后端 API 服务了!
继续加油! 💪

浙公网安备 33010602011771号