1.服务器
阿里云ssh无法登录其他服务器
- 原因
- 创建的ECS服务器未添加安全组策略
- 方案
- 在管理页面添加自己定义的策略即可
阿里云新开的服务器不能修改密码
- 原因
- 必须等待超过3分钟后才可以设置
- 方案
- 等
无法使用sftp连接,但是可以ssh
- 原因
- /etc/ssh/sshd_config 文件被修改了, 其中被设置成Subsystem sftp /usr/libexec/openssh/sftp-server
- 方案
- 调整Subsystem sftp /usr/libexec/openssh/sftp-server 为系统自带 Subsystem sftp internal-sftp
总是很快就断开连接
- 原因
- linux的配置文件设置超时太小
- 方案
- 修改 sshd_config 和 /etc/profile 两个配置文件
vim /etc/ssh/sshd_config
打开下面两个开关
ClientAliveInterval 30
ClientAliveCountMax 3
vi /etc/profile
export TMOUT=86400 #设置一个大值
2.jenkins
使用Jenkins发布代码失败,,本地打包发布可以
-
原因
- 方案
- Jenkins将cnpm改为yarn
使用Jenkins发布代码,部分样式无效,本地打包发布可以
- 原因
- 替换了node-sass,但是样式里面的/deep/修饰没有对应改,导致无效。本地可以是因为我本地代码有node-sass的缓存
- 方案
- 把老的 webpack版本改成 vue-cli
jenkins打包异常,构建错误
- 原因
- 最新提交的代码 install后的库有问题 ,感觉是库太新。
- 方案
- 需要利用之前开发人员本地的环境代码 打包才能生成正常的库。然后把node_modules 复制到 jenkins正式 里面。再执行build
gitlab自动化构建,提交yml时候总是提示 Checking pipeline status
- 原因
- 使用了变量 访问 git分支
- 方案
- 把变量 $GIT_BRANCH 改为常量字符
提示找不到 自定义cdn库
提示找不到 ims-cdn库,Error: [my-cdn@^3.0.0] Can't find package ims-cdn@^3.0.0
- 原因
- cdn改成了内网的私有源, 使用cnpm install ,cnpm 需要单独设置 registry ,不能用npm的,要单独设置cnpm的
- 方案
- 修改 cnpm的源 cnpm set registry http://10.7.123.128:4873/
jenkins打包使用 pnpm报错
提示ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies
- 原因
- 在pnpm严格模式下,必须所有包都是对等依赖
- 方案
- 执行 pnpm config set strict-peer-dependencies=false 忽略严格模式
jenkins打包提示错误
These dependencies were not found:
* core-js/modules/es.array.push.js in ./src/utils/index.js,.....
- 原因
- 更换node16之后,pnpm 执行打包后,错误
- 方案
- 在打包前,先删除执行的pnpm生成文件 rm -rf package-lock.json prod.tar.gz pnpm-lock.yaml node_modules
jenkins打包提示错误2
Error: Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime (93)
https://github.com/sass/node-sass/releases/tag/v4.14.1
at module.exports (/home/jenkins/.jenkins/workspace/xxxxxxx/node_modules/_node-sass@4.14.1@node-sass/lib/binding.js:13:13)
- 原因
- 更换node16之后,pnpm 执行打包后,由于node_sass和node版本是强相关,所以要么修改项目里的sass版本,要么回退node到指定版本
- 方案
- 实际测试 把node降为 14版本,依然node-sass版本问题 ,最终还是使用node12 + cnpm打包。
pnpm打包报错
ERROR: This version of pnpm requires at least Node.js v14.6
- 原因
- pnpm 最低要求版本是14.6
- 方案
- 升级node到16的版本,但是要注意 如node-sass使用老版本的项目可能不支持
使用最新pnpm 和源打包jenkis失败
- 原因
- 打包的时候不能使用pnpm,cnpm yarn ,因为会根据最新的情况生产lock 或 yml 文件,但是最早期生成的package-lock.json 才是最稳定。所以只能使用npm install 和打包 因为会使用
- 方案
- 一定要保留最早的package-lock.json, 并且使用npm打包
jenkins升级openssh 9.3sp无效
jenkins在系统设置页面,无法连接已经升级openssh 9.3sp的服务器
- 原因
- 不支持高版本,建议降级
- 方案
# 通过移除 /usr/bin/和 /usr/sbin 两个文件夹下带ssh的程序,并且 重新执行yum 安装原有系统支持的openssh版本 一般是7.4
yum -y install openssh openssh-server openssh-clients
# 重启sshd服务
systemctl restart sshd
3.nginx
nginx新配置的项目无法访问
location /mes {
alias html/pc/mes/prod;
try_files $uri $uri/ /mes/index.html;
}
location /mes_leader {
alias html/pc/mes_leader/prod;
try_files $uri $uri/ /mes_leader/index.html;
}
pc 新增的mes_leader 项目路径,访问总是重定向到mes路径下。
- 原因
- nginx的配置顺序问题,mes 配置在了mes_leader 的前面,导致总是优先匹配了 /mes 路径
- 方案
- 调整顺序,把mes 放到mes_leader 的下面
nginx新配置的项目无法访问2
配置了路径监听,但是一直访问不到,提示404
location /hioshop {
root /usr/share/nginx/html/hioshop;
index index.html index.htm;
}
- 原因
- 只有根目录才能用 root 字段,其他的要用 alias 字段配置
- 方案
location /hioshop {
alias /usr/share/nginx/html/hioshop;
index index.html index.htm;
}
cur命令无法获取第二个参数
使用curl 的$args无法获取第二个参数 curl 171.35.40.133:8304?a=11&b=222
- 原因
- 当多个参数的时候 只能识别第一个参数
- 方案
- 必须通过引号 包裹 curl '171.35.40.133:8304?a=11&b=222'
- 或者用浏览器访问
nginx部署项目,在jenkins打包运行后,项目不能访问,提示无法访问
部署命令如下
cd /usr/local/nginx/html/pc/admin/
rm -rf $folderName
tar -zxvf dev.tar.gz
mv dist $folderName
- 原因
- 执行 tar -zxvf dev.tar.gz 解压文件夹后,文件权限默认过低
- 方案
- 添加文件夹权限即可,在命令的最后面执行
- chmod -R 777 $folderName
测试环境 jenkis打包失败
- 原因
- jenkis服务端配置 远程服务器没有配置 根路径 /
- 方案
- 在配置加上 / 设置
Jenkins 发布只能传输文件到服务器,无法启动
- 原因
- 不知
- 方案
- 手动启动项目:登录堡垒机,使用网页shell模式,进入项目根目录,执行命令:
- npm run stop-prod
- npm run start-prod
从首页进入子项目,提示js加载异常
- 原因
- nginx配置 预正式 里面 多了 参数 $args,
location /mes_leader {
alias html/mobile/mes_leader/gray;
try_files $uri $uri/ /mes_leader/index.html$args;
}
新代码在url尾部添加了?0679458697404145 随机码,导致新拼接的url无法正常识别,重定向到 /index模块项目
- 方案
- 删除$args; 参数
发布项目后,总是提示资源加载不到
项目所有测试和正式域名的项目,正式环境下 发布项目后,总是提示资源加载不到,刷新后才能获取最新。
- 原因
- nginx的全局配置 add_header Cache-Control no-cache; 只有在配置ip+端口才能生效,配置域名不能生效。
- 所以加载的index.html 还是老的 对应的js和css 就会找不到。开发环境没这个问题主要就是用的都是ip。
- 正式test.mobile可以是因为转发了开发的ip,开发的ip已经生效了。
- 方案
- 在对应的server区域单独配置 即可 add_header Cache-Control no-cache;
- 部分需要直接配置到 localtion区域才能生效
nginx更新缓存策略也不生效
nginx更新了最新的缓存策略,但是前端一直不生效
- 原因
- 项目启动了servicework ,导致每次访问的都是之前缓存的信息,刷新无效,需要彻底清缓存才可以
- 方案
- 需要谷歌浏览器 开发者工具- 应用页签->cacha->cache storage 清空即可
- 对应的项目main.js 直接删除
- import './registerServiceWorker' 的引入
配置http 转发接口的时候,提示400 request header or cookie too large
- 原因
- 多配置了 http2 和
add_header Strict-Transport-Security "max-age=31536000"; ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_stapling on; ssl_stapling_verify on; ssl_verify_depth 10; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; resolver 8.8.8.8 8.8.4.4 216.146.35.35 216.146.36.36 valid=60s; #添加resolver解析OSCP响应服务器的主机名,valid表示缓存。 resolver_timeout 2s; # resolver_timeout表示网络超时时间 - 方案
- 移除多余的配置
预正式环境,把nginx stop 后,重启后端口一直访问转圈
- 原因
- nginx启动的时候 需要先加载fastds模块,因为有一个服务没有启动,导致
- 方案
- 通过nginx 的error.log日志 分析得出服务一直在启动中,
把fastds启动即可
sudo service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop
service fdfs_storaged start # 启动fdfs_storaged服务,停止用stop
调用接口提示跨域问题
提示The 'Access-Control-Allow-Origin' header contains multiple values'*, *', but only one is allowed.
- 原因
- 后端打开了跨域,前端nginx也打开了跨域
- 方案
- nginx要去除重复的跨域全局设置
# add_header Access-Control-Allow-Origin *;
上传大文件提示 413 (too large)
- 原因
- nginx默认上传大小限制1m
- 方案
- 新增配置头
- client_max_body_size 100m;
nginx 提示 unknown directive "gzip_static" in xxx
- 原因
- 没有安装http_gzip_static_module 模块
- 方案
- 重新编译构建nginx
./configure --prefix=/usr/local/nginx --with-http_gzip_static_module
nginx部署日志切割,使用cron 执行logrotate定时任务没有生效
- 原因
- logratate需要$Path的全局环境变量,需要提前引入
- 方案
- 如果是直接nginx部署 加入 . /etc/profile;
. /etc/profile;/usr/local/nginx/logs/tack.sh
- 如果是docker部署 则需要在Dockerfile 里面把环境变量导出 ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
日志切割修改系统时间不生效
nginx部署日志切割,使用修改系统时间第一次生效,后面没有生效,如计划是晚上0点执行,提前设置成 23:59:50, 等待10秒执行。
- 原因
- linux调度 一般在一分钟以上
- 方案
- 需要提前1分钟以上调试才生效,提前设置成 23:59:00, 等待1分钟执行
4. git
提交代码总是提示失败
eslint . xxxxxx
husky pre-commit hook exited with code 1 (error)
- 原因
- 项目使用了eslint ,必须满足指定的格式化才可以
- 方案
- 在 package.json 找到 formatter 格式化命令,提交前执行
- npm run formatter
gitlab版本升级
提示
GitLab version mismatch:
Your current GitLab version (15.11.3) differs from the GitLab version in the backup!
Please switch to the following version and try again:
version: 11.2.3
- 原因
- gitlab 必须同版本升级 或小版本升级,不能夸大版本
- 方案
- 要从11到15 必须经过 15次 小版本升级 ,建议使用docker 升级版本
push失败
push 提示无法 fatal: unable to access 'github.com/xxxxx.git/': Failed to connect to github.com port 443: Timed out
- 原因
- 可能是gitbub之前设置过代理,取消git的proxy设置即可
- 方案
-
git config --global http.proxy git config --global https.proxy
-
commit失败
在git 直接提交git commit -am 'xxxx' fatal: paths 'xxxxx...' with -a does not make sense
- 原因
- git commit -am “注释(提交)说明” 需要使用双引号
- 方案
- 单引号 改 双引号
访问git 超时
fatal: unable to access 'github.com/mjsong07/vu…': OpenSSL SSL_read: Connection was reset, errno 10054
- 原因
- 中国国外网站- 连接限制问题
- 方案
- 使用fastgithub 来自动切换dns实现实时访问
项目构建打包
Parsing error: Unexpected token
- 原因
- Parsing error 是eslint解析错误
- 方案
- 安装babel-eslint插件,配置eslint:"parser": "babel-eslint"
无法注入环境变量到运行时环境
- 原因
- vue-cli的库实现了VUE_APP_前缀的参数自动注入环境变量,其他变量名需要自己实现
- 方案
//打包配置项添加对应数据即可
configureWebpack:{
plugins:[
new webpack.DefinePlugin({
'process.env.RUN_TYPE': JSON.stringify(RUN_TYPE),
'process.env.ROOT_PATH':JSON.stringify(rootPath)
})
]
},
使用node-sass的项目容易安装失败
- 原因
- node-sass 国内安装不上去/官方放弃维护
- 方案
- 改用sass即可
使用es6兼容插件babel第三方依赖库时,cnpm打包babel第三方库无效
-
原因
- 方案
- 使用yarn打包
vite创建的项目启动失败
vite创建的项目,在执行node命令都会提示ReferenceError: module is not defined in ES module scope This file is being treated as an ES module because it has a '.js' file extension
- 原因
- package.jason 中定义了 "type": "module",
- 方案
- 删除 "type": "module", 即可
xxxxxxx
执行jest 提示Cannot find module './Button.vue' or its corresponding type declarations
- 原因
- ts项目需要声明shims-vue.d.ts,才能识别.vue文件
-
方案
在src下新建文件 D:\my_project\vite-project2\src\shims-vue.d.ts
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}
node.js 卸载提示:Windows10 安装软件时提示“ the error code is 2503/2502”错误
- 原因
- C:\Windows\temp 权限限制
- 方案
- C:\Windows\temp 设置当前用户为完全访问权限
nodejs报错:npm WARN config global --global,xx
nodejs报错:npm WARN config global --global, --local are deprecated. Use `--location解决
- 原因
- 最新版本已经废弃 --global , -g 的写法
- 方案
- 找到nodejs安装地址,把文件npm和npm.cmd 里面的将prefix -g替换为prefix --location=global
vscode命令行无法访问和执行 全局的pnpm
- 原因
- 当前用户的权限不够,导致访问不了部分环境变量
- 方案
- 需要在打开的时候,使用管理员身份打开vscode
nvm 执行命令 nvm -v 报错
提示 This is not the package you are looking for: please go to nvm.sh
- 原因
- 使用 npm -g i nvm 安装无效
- 方案
直接下载安装包 https://github.com/nvm-sh/nvm/archive/refs/tags/v0.38.0.tar.gz
//进入服务器 根目录
cd ../
//解压文件 到 root/.nvm
tar -zxvf nvm-0.38.0.tar.gz --strip-components 1 -C /root/.nvm
配置全局信息
vi ~/.bashrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source ~/.bashrc
vue-dev-tool插件配置无效果
配置完vue-dev-tool插件 后,提示Vue.js is detected on this page. Devtools inspection is not available because it's in production mode or explicitly disabled by the author. 并且底部开发工具vue页签不显示
- 原因
- 当前页面必须满足下面3个条件
- 页面必须是vue的项目
- 当前项目打包方式不能是 production 正式模式
- vue的库不能使用 vue.min.js等压缩过的库
- 当前页面必须满足下面3个条件
- 方案
- 访问vue的项目,
- 打包时候使用开发模式
- cdn只使用 vue.js