服务器启动失败排查
应用启动失败是非常常见的现象,逻辑错误,编译错误,配置错误,环境问题,都有可能导致你的项目无法启动。
快速定位代码问题
大多数情况下,我们说的启动失败一般都是服务器环境启动失败,下面以 Linux 为例。
1、使用 ps aux | grep node
检查进程是否存在,进程数量是否正确
2、打开 项目的日志目录,查看 common-error.log
文件的内容,根据最新的堆栈来排查原因
3、启动的控制台日志,比如 pm2 logs
相关的信息
大多数问题都会在日志中发现,请尽可能养成登录机器查看日志的习惯,这是开发者必备的技能。
可能的环境问题
除了代码本身的问题之外,环境可能也会带来一些问题,这些问题查起来就比较困难,往往和系统,权限,环境变量,启动参数,网络环境,甚至内核本身有关系。
下面列举一些可能的情况。
1、文件不完整或不是最新
确保的你的项目在部署前执行过以下的流程
- 1、使用
npm run dev
或者类似命令本地启动并运行成功 - 2、使用
npm run build
已经将 ts 文件编译为 js 文件,在根目录生成出dist
目录 - 3、使用
npm run start
在本地使用 js 文件执行成功
检查服务器上的文件,目录结构是否完整,比如:
- 1、
node_modules
目录是否存在 - 2、
dist
目录以及其中的 js 文件是否存在,或者为最新
2、启动用户的权限问题
我们一般会使用一个普通账户来执行,比如 admin 账户,而不是使用 sudo 去部署。
- 1、检查用户是否用创建目录,启动 node 的权限
- 2、检查项目的服务端日志目录是否有写入的权限
3、启动端口冲突
如果你启动了多个 Node.js 项目,如果使用了相同的端口,那么就会抛出端口重复使用的错误。