Error系列-常见异常问题解决方案以及系统指令总结

前情提要

  • 作为一名开发,日常工作中会遇到很多报错的情况,希望我的总结可以帮助到小伙伴们~
  • 日常工作中也会遇到需要部署项目或者登陆linux系统操作的情况,很多时候需要查找一些命令,于是我决定,要把我日常经常用到的一些命令总结起来,分享给小伙伴们~~
  • 下面以各个场景为案例,来列举我常用的一些命令

场景1:部署项目pm2启动以后无法访问项目,于是我采用了下面命令来重现问题

pm2 查看进程
pm2 ls
pm2 停止某个项目
pm2 stop 项目名
启动且重命名进程/应用
pm2 start app.js --name 项目名
查看日志
pm2 logs

场景2:yarn install 报错 self signed certificate in certificate chain

error An unexpected error occurred: "https://registry.npmmirror.com/bcryptjs/-/bcryptjs-2.4.3.tgz: self signed certificate in certificate chain".
info If you think this is a bug, please open a bug report with the information provided in "/var/local/xxx/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

问题解决

yarn config set "strict-ssl" false -g

场景3:error node_modules/sharp: Command failed.


error /var/local/xxxxx/node_modules/sharp: Command failed.
Exit code: 1
Command: (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
Arguments:
Directory: /var/local/xxxxxxxx/node_modules/sharp
Output:

问题解决

1. 下载python
2. 设置npm 的 python 环境变量
npm config set python=/usr/bin/python2.7
yarn config set python "/usr/bin/python2.7"


npm config set sharp_binary_host "https://npmmirror.com/mirrors/sharp" 
npm config set sharp_libvips_binary_host "https://npmmirror.com/mirrors/sharp-libvips"
3. 如果上述步骤无法解决,请参考下面的我这几篇文章
  • 解决sharp太慢、失败Could not load strapi-server.js, pmSomething went wrong installing the “sharp“ module

  • 多种方案解决前端安装sharp出错问题sharp: Command failed.

场景4:某些情况下,登陆linux系统做一些操作的时候需要 Root 授权

问题解决

# 进入根路径
[serverName ~]$ cd /
# 查看文件列表
[serverName /]$ ls
bin  boot  conf  data  dev  docker-data  etc  home  lib  lib64  media  mnt  opt  plugins  proc  root  run  sbin  srv  storage  sys  tmp  usr  var
# 想要进入某个路径,发现没有权限
[serverName /]$ cd var/local/xxxxxx/
-bash: cd: var/local/xxxxxx/: Permission denied
# 开启权限
[serverName /]$ sudo su
[sudo] password for XXXXXX_USER_01:
[root@serverName /]# cd var/local/xxxxxx/
[root@serverName xxxxxx]# ls
xxxxxx-uat-2  yarn.lock
# 删除某个文件(yarn.lock)
[root@serverName xxxxxx]# rm -rf yarn.lock
[root@serverName xxxxxx]# ls
xxxxxx-uat-2
# 设置python
[root@serverName xxxxxx]# cd xxxxxx-uat-2/
[root@serverName xxxxxx-uat-2]# yarn config set python "/usr/lib64/python2.7"
yarn config v1.22.18
success Set "python" to "/usr/lib64/python2.7".
Done in 0.04s.
[root@serverName xxxxxx-uat-2]# yarn install

场景5:复制文件从有权限目录到无权限目录

问题解决

# 开启权限,输入密码
[serverName /]$ sudo su
[sudo] password for XXXXXX_USER_01:
[root@servername var]# cd local
# mkdir 命令是 Linux操作系统中的一个基本工具,用于在文件系统中创建新的目录
[root@servername local]# mkdir uat-path
# mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。该命令的基本格式如下:
# 使用规则:mv 【选项】 源文件 目标文件
[root@servername local]# mv /home/path_01/td/project-uat-2 ./
[root@servername local]# ls
uat-path  project-uat-2
[root@servername local]# mv project-uat-2/ uat-path/
[root@servername local]# ls
uat-path
[root@servername local]# cd uat-path/

场景6:给user1加var目录权限

问题解决

sudo chown -R USER_01:USER_01 /var

场景7:设置环境变量 NODE_TLS_REJECT_UNAUTHORIZED 的值为 0,临时禁用 SSL certificate

问题解决

yarn config set NODE_TLS_REJECT_UNAUTHORIZED 0

举例:

[USER_01@servername /app]$ yarn config set NODE_TLS_REJECT_UNAUTHORIZED 0
yarn config v1.22.18
success Set "NODE_TLS_REJECT_UNAUTHORIZED" to "0".
Done in 0.04s.

场景8:代码执行遇到报错npm run deploy Error: connect->getConnection: All configured authentication methods failed

PS C:\my_files\my-project> npm run deploy

> [email protected] deploy
> node deploy.js

Error: connect->getConnection: All configured authentication methods failed
    at fmtError (C:\my_files\my-project\node_modules\ssh2-sftp-client\src\utils.js:55:18)
    at SftpClient.connect (C:\my_files\my-project\node_modules\ssh2-sftp-client\src\index.js:217:13)
    at async main (C:\my_files\my-project\deploy.js:16:5) {
  code: 'ERR_GENERIC_CLIENT',
  custom: true
}
undefined
C:\my_files\my-project\node_modules\ssh2-sftp-client\src\utils.js:55
  let newError = new Error(msg);
                 ^

Error: end: No SFTP connection available
    at fmtError (C:\my_files\my-project\node_modules\ssh2-sftp-client\src\utils.js:55:18)
    at haveConnection (C:\my_files\my-project\node_modules\ssh2-sftp-client\src\utils.js:311:20)
    at C:\my_files\my-project\node_modules\ssh2-sftp-client\src\index.js:1314:11
    at new Promise ()
    at SftpClient.end (C:\my_files\my-project\node_modules\ssh2-sftp-client\src\index.js:1305:12)
    at main (C:\my_files\my-project\deploy.js:25:12) {
  code: 'ERR_NOT_CONNECTED',
  custom: true
}
PS C:\my_files\my-project>

问题分析

此问题出在ssh2连接的过程中报错
Error系列-常见异常问题解决方案以及系统指令总结_第1张图片

问题解决

    1. 更换密码
    1. 配置项添加斜杠转义

场景9:linux配置DNS解析

修改这个文件/etc/resolv.conf就可以配置DNS

科普

/etc/resolv.conf是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名
resolv.conf的关键字主要有4个,分别为:

  • nameserver:定义DNS服务器的IP地址
  • domain:定义本地域名
  • search:定义域名的搜索列表
  • sortlist:对返回的域名进行排序
    注意:这里最主要的就是nameserver关键字,如果没有指定nameserver就找不到DNS服务,其它关键字是可选的。

配置示例

cat /etc/resolv.conf
domain  xxx.com
search  www.xxx.com  xxx.com
nameserver 111.112.112.11
nameserver 111.112.112.11

场景10:查硬盘以及内存,查看磁盘占用的空间,查看linux内存使用情况

df -h 命令详解

df -h 查看磁盘占用的空间

  • Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
  • Used:表示用掉的磁盘空间大小;
  • Available:表示剩余的磁盘空间大小;
  • Use%:磁盘空间使用率;
  • Mounted on:文件系统的挂载点,也就是磁盘挂载的目录位置

Error系列-常见异常问题解决方案以及系统指令总结_第2张图片

[xxxxx ~]$ df -h
Filesystem                        Size  Used Avail Use% Mounted on
aaaaaafs                          3.9G     0  3.9G   0% /dev
aaaas                             3.9G     0  3.9G   0% /dev/aaa
aaaas                             3.9G  114M  3.8G   3% /run
aaaas                             3.9G     0  3.9G   0% /sys/fs/cgroup

free -m 命令详解
  • 查看linux内存使用情况
  • -m 参数就是用 M 为单位显示内存使用情况
[xxxxxxxxxxx ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7821        3451         304         208        4065        3862
Swap:          9723         327        9396
  • Mem:内存的使用情况总览表。

  • total:表示物理,内存总量–机器总的物理内存 单位为:M

  • used:用掉的内存{ 总计分配给缓存(包含Buffer和cache)使用的数量,但其中可能部分缓存并未实际使用 }

  • free: 空闲的物理内存–未被分配的内存

  • shared:共享内存,一般系统不会用到,这里也不讨论

  • buffers:系统分配但未被使用的buffers数量

  • cached:系统分配但未被使用的cache数量

Error系列-常见异常问题解决方案以及系统指令总结_第3张图片

场景11:待补充

  • 今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

你可能感兴趣的:(面向全栈,linux,前端,node.js)