kt-template-admin/skills/references/deployment/faq.md

210 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 常见问题
## 问题查找渠道
1. 对应模块的 GitHub 仓库 [issue](https://github.com/vbenjs/vue-vben-admin/issues) 搜索
2. 从 [Google](https://www.google.com) 搜索问题
3. 从 [百度](https://www.baidu.com) 搜索问题
4. 在列表找不到问题可以到 [issues](https://github.com/vbenjs/vue-vben-admin/issues) 提问
5. 需要讨论的问题到 [discussions](https://github.com/vbenjs/vue-vben-admin/discussions)
---
## 依赖问题
### git pull 后依赖更新
在 Monorepo 项目下,需要养成每次 `git pull` 后执行 `pnpm install` 的习惯,因为经常会有新的依赖包加入。项目使用 Husky 做提交前校验,依赖同步仍建议手动执行。
### 依赖安装失败
- 尝试执行 `pnpm run reinstall`
- 切换手机热点进行依赖安装
- 配置国内镜像,在项目根目录创建 `.npmrc` 文件:
```bash
# .npmrc
registry = https://registry.npmmirror.com/
```
---
## 缓存更新问题
项目配置默认缓存在 `localStorage` 内,版本更新后可能有些配置没改变。
**解决方式:** 每次更新代码时修改 `package.json` 内的 `version` 版本号。因为 localStorage 的 key 是根据版本号来的,更新后版本不同前面的配置会失效,重新登录即可。
---
## 修改配置文件问题
修改 `.env` 等环境文件以及 `vite.config.ts` 文件时vite 会自动重启服务。自动重启有几率出现问题,请重新运行项目即可解决。
---
## 本地运行报错
由于 vite 在本地没有转换代码,且代码中用到了可选链等比较新的语法,本地开发需要使用版本较高的浏览器(**Chrome 90+**)。
---
## 页面切换后空白
开启路由切换动画,且页面组件存在多个根节点会导致此问题。
**错误示例:**
```vue
<template>
<!-- 注释也算一个节点 -->
<h1>text h1</h1>
<h2>text h2</h2>
</template>
```
**正确示例:**
```vue
<template>
<div>
<h1>text h1</h1>
<h2>text h2</h2>
</div>
</template>
```
> **提示:**
> - 如果想使用多个根标签,可以禁用路由切换动画
> - template 下面的根注释节点也算一个节点
---
## 本地开发正常,打包后不行
排查是否使用了 `ctx` 变量:
```ts
// ❌ 错误用法 - ctx 未暴露在实例类型内Vue 官方不推荐使用
import { getCurrentInstance } from 'vue';
getCurrentInstance().ctx.xxxx;
```
---
## 打包文件过大
- 使用精简版进行开发,完整版引用了较多库文件
- 开启 gzip体积约为原先 1/3
- 可同时开启 brotli 压缩,比 gzip 更好
**注意:**
- `gzip_static` 模块需要 nginx 另外安装,默认未安装
- 开启 `brotli` 也需要 nginx 另外安装模块
---
## 运行错误 - 路径问题
如果出现类似以下错误,请检查项目全路径(包含所有父级路径)**不能出现中文、日文、韩文**
```ts
[vite] Failed to resolve module import "ant-design-vue/dist/antd.css-vben-adminode_modulesant-design-vuedistantd.css"
```
---
## 控制台路由警告
如果页面能正常打开,以下警告可忽略:
```ts
[Vue Router warn]: No match found for location with path "xxxx"
```
后续 `vue-router` 可能会提供配置项来关闭警告。
---
## 启动报错 - Node.js 版本
出现以下错误时,检查 Node.js 版本是否符合要求:
```bash
TypeError: str.matchAll is not a function
```
---
## nginx 部署 MIME 类型问题
部署到 nginx 后,可能出现以下错误:
```bash
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "application/octet-stream".
```
**解决方式一:** nginx 配置
```bash
http {
# 如果有此项配置需要注释掉
# include mime.types;
types {
application/javascript js mjs;
}
}
```
**解决方式二:** 修改 nginx 的 `mime.types` 文件,将 `application/javascript js;` 改为 `application/javascript js mjs;`
---
## 项目更新
### 无法像 npm 插件一样更新
项目是完整的项目模版,不是插件或安装包,无法像插件一样更新。需要根据业务需求二次开发,自行手动合并升级。
### 更新建议
项目采用 Monorepo 方式管理,核心代码如 `packages/@core`、`packages/effects` 已抽离。只要业务代码没有修改这部分代码,可以直接拉取最新代码合并。
**建议:** 关注仓库动态积极合并,不要长时间积累,否则合并冲突过多。
### Git 更新流程
```bash
# 1. 添加公司 git 源地址
git remote add up gitUrl;
# 2. 提交代码到公司
git push up main
# 3. 同步公司代码
git pull up main
# 4. 同步开源最新代码
git pull origin main
```
---
## 移除百度统计代码
在对应应用的 `index.html` 文件中,删除以下代码:
```html
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement('script');
hm.src = 'https://hm.baidu.com/hm.js?d20a01273820422b6aa2ee41b6c9414d';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
```