环境配置
node环境搭建
00 分钟
2024-11-18
2024-11-25
type
status
date
slug
summary
tags
category
icon
password
URL
确保防火墙开放了端口 888: 检查 888 端口是否允许访问:
如果没有看到 888,可以添加规则:

如果你选择使用 pm2

  1. 安装 pm2: 首先,你需要在服务器上全局安装 pm2。可以通过以下命令进行安装:
    1. 配置启动选项: 在宝塔面板中配置启动选项时,选择 自定义启动命令,并在命令框中输入以下命令来使用 pm2 启动应用:
      1. 这里的 /www/wwwroot/your-app-folder/app.js 是你的 Node.js 应用入口文件路径,而 "your-app-name" 是你给应用设置的名称。
    1. 使用 pm2 启动 Node.js 应用: 通过 pm2 启动应用后,pm2 会帮助你管理进程,包括自动重启应用和查看日志等功能。你可以通过 pm2 查看应用的状态、日志或进行其他管理操作。
        • 查看应用列表:
          • 查看日志:
            • 删除日志:
              • 启动应用:
            1. 宝塔面板自动启动 pm2(可选): 如果你希望 pm2 在服务器重启后自动启动,可以通过以下命令为 pm2 设置开机自启:
              1. 然后运行显示的命令来完成设置。

            express

            Express 是一个基于 Node.js 的轻量级 Web 应用框架,用于快速构建 Web 应用程序和 RESTful API。它极大地简化了服务器端开发,提供了常用的功能和灵活的扩展能力。
            简单来说:
            • Express = Node.js 的“增效工具”,让你更轻松地构建和管理服务器。

            Express 的作用

            1. 处理 HTTP 请求和响应:
                • 通过简单的 API(如 app.get()app.post())轻松定义路由。
                • 处理不同类型的请求(GET、POST、PUT、DELETE 等)。
                • 管理请求参数、头部和响应数据。
            1. 提供中间件支持:
                • 中间件是 Express 的核心概念,用于在请求到达目标处理逻辑之前或之后执行特定操作。
                • 常见中间件功能:日志记录、权限验证、解析请求体、处理静态文件等。
            1. 支持路由管理:
                • 路由器功能用于组织和管理 API 路由,将复杂的逻辑分成模块化文件。
            1. 构建 RESTful API:
                • Express 非常适合构建符合 REST 规范的 API,便于前后端分离项目实现通讯。
            1. 支持扩展:
                • 有丰富的第三方插件库,比如处理文件上传、实现身份验证、跨域资源共享(CORS)等。

            用 Express 和不用 Express 写接口的区别

            1. 没有 Express:使用纯 Node.js

            用 Node.js 原生模块(如 http 模块)写接口,你需要自己处理许多基础功能。例如:
            • 解析请求路径和参数。
            • 区分和处理 HTTP 方法(如 GET 和 POST)。
            • 手动管理路由映射。
            • 解析请求体(JSON、表单等)。
            • 处理错误、响应头等。
            • 缺点
              • 代码冗长:需要重复写大量样板代码。
              • 不灵活:没有现成的工具处理复杂功能(如路由分组、权限验证等)。
              • 易出错:基础功能(如解析请求体)需要手动实现,容易遗漏或出错。

            2. 使用 Express

            Express 抽象了许多常见任务,代码简洁且易读。例如:
            • 优点
              • 简化路由管理:用 app.get()app.post() 轻松处理不同路径和方法。
              • 内置功能丰富:例如请求体解析、错误处理等。
              • 支持中间件:灵活扩展功能(如认证、日志)。
              • 易维护:代码清晰,便于管理复杂项目。

            总结对比

            特性
            Node.js 原生模块
            Express
            学习曲线
            较陡,需要了解底层原理
            平缓,适合快速开发
            代码简洁性
            冗长,需要大量样板代码
            简洁,减少重复代码
            功能丰富性
            需要手动实现解析、错误处理等
            内置丰富功能,插件生态广泛
            适合场景
            小型或实验性项目,学习原理
            中大型项目,快速构建 API 和服务

            cors

            CORS(跨源资源共享,全称 Cross-Origin Resource Sharing)是浏览器的一种安全机制,用来控制不同源之间的资源共享行为。
            它允许服务器通过特定的 HTTP 响应头,告诉浏览器:
            某些来自其他域(源)的请求是被允许的。

            跨源访问的典型场景

            • 同源:浏览器允许访问(协议、域名、端口必须完全一致)。
              • 如:
              • http://example.com:3000http://example.com:3000 是同源。
            • 跨源:当协议、域名或端口任意一个不同,就会触发跨域限制。
              • 如:
              • 前端运行在 http://localhost:3000,而后端运行在 http://localhost:5000,这是跨源访问。

            为什么会有跨域问题?

            • 浏览器限制:现代浏览器出于安全考虑,会限制跨域请求,以防止恶意网站盗用用户数据。
            • 实际需求:前后端分离开发中,前端需要通过 AJAX 或 Fetch 向不同域的后端请求数据。
            如果没有配置 CORS,浏览器会拒绝前端发起的跨域请求。

            CORS 的作用

            CORS 通过添加 HTTP 响应头,告诉浏览器某些跨域请求是被允许的。例如:
            • Access-Control-Allow-Origin:指定哪些域名可以访问资源。
            • Access-Control-Allow-Methods:指定允许的 HTTP 方法(如 GET、POST 等)。
            • Access-Control-Allow-Headers:指定允许的请求头。

            如何在 Express 中解决 CORS?

            1. 安装 cors 中间件

            cors 是一个帮助 Express 处理跨域问题的库。
            • 安装:

            2. 使用 cors 中间件

            在服务器代码中引入并启用 cors
            此时,任何来源的请求都会被允许访问服务器上的资源。

            3. 限制允许的源

            如果你只想允许特定的来源访问,可以通过配置选项来限制:
            • 动态配置:如果需要允许多个来源:

            CORS 配置常用选项

            • origin
              • 定义允许的域,'*' 表示允许所有来源。
            • methods
              • 指定允许的 HTTP 方法,如 GET, POST, PUT, DELETE
            • allowedHeaders
              • 指定允许的请求头(如 Content-TypeAuthorization)。
            • credentials
              • 如果需要支持发送凭据(如 Cookie),设置为 true
            示例:

            总结

            1. CORS 是什么
                • 一种浏览器机制,防止未经授权的跨域访问。
            1. 安装 cors
                • 使用 npm install cors 安装。
            1. 启用跨域支持
                • 使用 app.use(cors()) 启用默认跨域配置。
                • 或根据项目需求设置更精细的规则。
            CORS 是前后端分离开发中的常见问题,用 cors 中间件处理跨域问题是最快捷、简单的方式。

            处理编码数据

            1. body-parser

            作用

            • body-parser 是一个用于处理请求体数据的中间件。
            • 它可以解析多种数据格式,将请求体的数据转为 JavaScript 对象,挂载到 req.body 中,方便服务器处理。

            常见用途

            • 解析 JSON 数据(如 API 请求)。
            • 解析 URL 编码数据(如表单提交的数据 application/x-www-form-urlencoded)。
            • 解析 纯文本二进制数据

            安装必要性

            • 推荐安装:处理请求体数据是后端开发中的常见需求,body-parser 大大简化了处理流程。
            • 如果使用 Express 4.16.0 及以上版本,Express 已内置部分功能express.json()express.urlencoded()),可以直接使用,而无需安装 body-parser

            安装

            使用

            注意

            • 如果使用的是 Express 内置方法,则改为以下写法:

            2. cookie-parser

            作用

            • cookie-parser 是一个中间件,用于解析客户端发送的 Cookie。
            • 它会将 Cookie 数据解析成 JavaScript 对象,挂载到 req.cookies 中,便于服务器读取和操作。

            常见用途

            • 实现用户认证、会话管理等功能时,常需要操作 Cookie。

            安装必要性

            • 推荐安装:虽然可以手动解析 Cookie,但 cookie-parser 提供了简单、稳定的解析功能,是 Express 项目中处理 Cookie 的标准工具。

            安装

            使用

            注意

            • 如果需要签名的 Cookie(更安全),可以使用 cookieParser(secretKey),并通过 req.signedCookies 获取签名的 Cookie。

            3. multer

            作用

            • multer 是一个中间件,用于处理表单数据,特别是 multipart/form-data 类型的表单(如文件上传)。
            • 它将上传的文件存储到服务器指定的路径,或者存储在内存中,供后续处理。

            常见用途

            • 上传图片、视频、文档等文件。

            安装必要性

            • 必须安装:Node.js 原生无法直接处理 multipart/form-data,如果项目涉及文件上传功能,就需要安装 multer

            安装

            使用

            注意

            • dest 指定文件存储的目录,需确保该目录存在。
            • req.filereq.files 中包含上传文件的详细信息(如文件名、路径等)。

            总结

            中间件
            作用
            是否必要
            body-parser
            解析请求体数据(JSON、URL 编码、文本等)
            必要(或用 Express 内置功能)
            cookie-parser
            解析客户端 Cookie,将其转为对象
            推荐
            multer
            处理文件上传(multipart/form-data
            必要(涉及文件上传时)

            jsonwebtoken

            作用

            • jsonwebtoken 是一个库,用于生成和验证 JSON Web Tokens(JWT)。
            • JWT 是一种基于 JSON 的开放标准(RFC 7519),用于在各方之间安全传输信息。
            • 通常用于用户认证和授权,比如登录后生成的 token,前端携带 token 访问受保护的接口。

            功能

            1. 生成 Token
                • 服务端在用户登录成功后,使用用户信息生成 Token,并将 Token 返回给前端。
            1. 验证 Token
                • 前端将 Token 附加到请求头中,服务端验证该 Token 的有效性,确保请求合法。

            安装必要性

            • 必要安装:如果你的项目使用 JWT 来实现身份验证或授权,就必须使用 jsonwebtoken 来生成和验证 Token。

            安装

            使用

            特点

            • 支持自定义有效期(expiresIn)。
            • 支持 payload 加密和签名。
            • Token 是前后端分离认证的主流方案。

            express-jwt

            作用

            • express-jwt 是一个 Express 中间件,用于自动验证请求中的 JWT。
            • 它基于 jsonwebtoken 实现,简化了验证流程。
            • 常用于保护需要授权访问的路由。

            功能

            1. 自动从请求头、查询参数或 Cookie 中提取 Token。
            1. 验证 Token 的有效性。
            1. 验证通过后,将解码后的用户信息挂载到 req.user,便于后续处理。

            安装必要性

            • 推荐安装:如果项目使用 Express 框架,并需要保护路由,express-jwt 是一个高效的解决方案。

            安装

            使用

            特点

            • 自动化 Token 验证,降低出错几率。
            • 提供 unless() 方法灵活配置无需认证的路由。
            • 验证失败会自动返回 401 错误。

            jsonwebtoken 生成,express-jwt 自动验证

            特性
            jsonwebtoken
            express-jwt
            作用
            手动生成和验证 Token
            自动验证 Token 并挂载解码后的数据到 req.user
            适用场景
            用于所有项目,生成和验证 JWT 是核心功能
            Express 项目中,用于保护路由的授权中间件
            安装必要性
            必要安装
            推荐安装

            nodemon

            nodemon 是一个用于 Node.js 开发的工具,它能够 自动重启 Node.js 应用,当你的代码发生变化时,不需要手动重启服务器。这对于开发时提升效率非常有帮助。

            作用

            • 自动重启nodemon 会监视你的项目文件(如 .js.json.mjs 等文件),当你修改文件时,它会自动重启 Node.js 应用程序,无需手动停止和启动应用。
            • 提高开发效率:当你修改了代码后,无需每次都手动停止服务器并重新运行,nodemon 会自动检测到代码变化并重启应用,节省了开发时的时间和精力。

            安装必要性

            • 必要性nodemon 在开发环境中非常有用,但在生产环境中不需要。它仅在开发过程中提升效率,因此通常作为开发依赖安装。

            如何安装

            1. 安装全局 nodemon(推荐)

            • 可以将 nodemon 安装到全局本机环境,这样可以在任何 Node.js 项目中使用 nodemon 命令。

            2. 使用 nodemon 启动项目

            • 如果你已经安装了 nodemon,可以通过以下方式启动你的 Node.js 应用:
              • 全局安装:你可以直接在命令行中使用 nodemon 启动应用:

              3. 在 package.json 中配置

              • 你还可以在 package.json 中配置 nodemon,这样你就可以通过 npm run 命令来启动应用:
              然后可以使用以下命令来启动:

              总结

              • nodemon 是一个非常实用的开发工具,可以帮助开发者在代码修改时自动重启 Node.js 应用。
              • 安装:你可以全局或本地安装 nodemon,推荐在开发环境中使用它。
              • 命令:使用 nodemon app.js 来启动你的应用,或者在 package.json 配置脚本来使用 npm start
               
              上一篇
              AppStore转让应用
              下一篇
              Vue 转 React 不完全指北