uni-app 升级到4.06后,cli调用了vite不存在的接口报错
uni-app 升级到4.06后,cli调用了vite不存在的接口报错
bug描述:
cli工程
此前使用3.0.0-3090920231225001版本,今天命令行提示有新版本,执行npx @dcloudio/uvm@latest
后更新到4.06,重新npm run dev
进入dev模式,仍能正常启动本地服务,但是一旦请求任一模块就会报错。
报错如下:
Compiler version: 4.06(vue3)
Compiling...
vite v4.0.3 dev server running at:
➜ Local: http://localhost:80/
➜ Network: http://169.254.173.112:80/
➜ Network: http://172.21.0.1:80/
➜ Network: http://169.254.122.209:80/
➜ Network: http://10.1.20.211:80/
➜ Inspect: http://localhost/__inspect/
ready in 2334ms.
C:\Users\q\Desktop\tr-small-store\node_modules\.pnpm\@dcloudio+uni-h5-vite@3.0.0-4000620240325001_postcss@8.4.35_vue@3.2.47\node_modules\@dcloudio\uni-h5-vite\dist\plugins\sourcemap.js:33
const mod = this._server.moduleGraph._getUnresolvedUrlToModule(key);
^
TypeError: this._server.moduleGraph._getUnresolvedUrlToModule is not a function
at C:\Users\q\Desktop\tr-small-store\node_modules\.pnpm\@dcloudio+uni-h5-vite@3.0.0-4000620240325001_postcss@8.4.35_vue@3.2.47\node_modules\@dcloudio\uni-h5-vite\dist\plugins\sourcemap.js:33:58
Node.js v20.9.0
ELIFECYCLE Command failed with exit code 1.
报错位置如图1
升级产生的依赖变动如图2
附加信息:
升级前package.json
{
"dependencies": {
"@dcloudio/uni-app": "3.0.0-3090920231225001",
"@dcloudio/uni-app-plus": "3.0.0-3090920231225001",
"@dcloudio/uni-components": "3.0.0-3090920231225001",
"@dcloudio/uni-h5": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-alipay": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-baidu": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-jd": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-lark": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-qq": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
"@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
"@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
"clipboard": "^2.0.11",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"long": "^5.2.3",
"pinia": "2.0.36",
"uview-plus": "^3.1.45",
"vue": "3.2.47",
"vue-i18n": "9.6.2"
},
"devDependencies": {
"@dcloudio/types": "3.4.1",
"@dcloudio/uni-automator": "3.0.0-3090920231225001",
"@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
"@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
"@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
"@iconify-json/carbon": "^1.1.30",
"@uni-helper/eslint-config": "^0.0.6",
"@uni-helper/uni-app-types": "^0.5.12",
"@uni-helper/uni-cloud-types": "^0.5.2",
"@uni-helper/unocss-preset-uni": "^0.2.7",
"@uni-helper/vite-plugin-uni-pages": "^0.2.14",
"@vue/runtime-core": "3.3.7",
"eslint": "^8.57.0",
"mini-types": "^0.1.7",
"miniprogram-api-typings": "^3.12.2",
"sass": "1.64.2",
"unocss": "^0.58.5",
"unplugin-auto-import": "^0.17.5",
"vite": "4.0.3",
"vite-plugin-inspect": "^0.8.3",
"vite-plugin-remove-console": "^2.2.0"
}
}
升级后package.json
{
"dependencies": {
"@dcloudio/uni-app": "3.0.0-4000620240325001",
"@dcloudio/uni-app-plus": "3.0.0-4000620240325001",
"@dcloudio/uni-components": "3.0.0-4000620240325001",
"@dcloudio/uni-h5": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-alipay": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-baidu": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-jd": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-kuaishou": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-lark": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-qq": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-toutiao": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-weixin": "3.0.0-4000620240325001",
"@dcloudio/uni-mp-xhs": "3.0.0-4000620240325001",
"@dcloudio/uni-quickapp-webview": "3.0.0-4000620240325001",
"clipboard": "^2.0.11",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"long": "^5.2.3",
"pinia": "2.0.36",
"uview-plus": "^3.1.45",
"vue": "3.2.47",
"vue-i18n": "9.6.2"
},
"devDependencies": {
"@dcloudio/types": "3.4.1",
"@dcloudio/uni-automator": "3.0.0-4000620240325001",
"@dcloudio/uni-cli-shared": "3.0.0-4000620240325001",
"@dcloudio/uni-stacktracey": "3.0.0-4000620240325001",
"@dcloudio/vite-plugin-uni": "3.0.0-4000620240325001",
"@iconify-json/carbon": "^1.1.30",
"@uni-helper/eslint-config": "^0.0.6",
"@uni-helper/uni-app-types": "^0.5.12",
"@uni-helper/uni-cloud-types": "^0.5.2",
"@uni-helper/unocss-preset-uni": "^0.2.7",
"@uni-helper/vite-plugin-uni-pages": "^0.2.14",
"@vue/runtime-core": "3.3.7",
"eslint": "^8.57.0",
"mini-types": "^0.1.7",
"miniprogram-api-typings": "^3.12.2",
"sass": "1.64.2",
"unocss": "^0.58.5",
"unplugin-auto-import": "^0.17.5",
"vite": "4.0.3",
"vite-plugin-inspect": "^0.8.3",
"vite-plugin-remove-console": "^2.2.0"
}
}
查看vite的仓库,_getUnresolvedUrlToModule 提交于 https://github.com/vitejs/vite/commit/c268cfaf0fdb0c82db22fcc67b790c00b2c248ac , 对应tag如下:
$ git describe --tags c268cfaf0fdb0c82db22fcc67b790c00b2c248ac
v4.3.0-beta.1-14-gc268cfaf0
我的项目vite版本是4.03,升级到4.5.3后就没问题了。 @dcloudio/uvm能否也将vite的版本纳入管理范围
收到,已处理
在 uni-app 升级到 4.06 版本后,如果你在使用 CLI 时遇到 Vite 不存在的接口报错,可能是由于 Vite 的版本或配置问题导致的。以下是一些可能的解决方案:
1. 检查 vite.config.js
或 vite.config.ts
配置文件
确保你的 vite.config.js
或 vite.config.ts
文件中的配置与 Vite 的版本兼容。Vite 的 API 在不同版本之间可能会有变化,尤其是在升级之后。
2. 检查 Vite 版本
确保你使用的 Vite 版本与 uni-app 4.06 兼容。你可以通过以下命令检查当前安装的 Vite 版本:
npm list vite
如果版本不兼容,可以尝试升级或降级 Vite 版本:
npm install vite@latest
或者指定一个已知的兼容版本:
npm install vite@3.0.0
3. 清理缓存并重新安装依赖
有时候,依赖包的缓存可能会导致问题。你可以尝试清理缓存并重新安装依赖:
npm cache clean --force
rm -rf node_modules
npm install
4. 检查 uni-app CLI 的配置
确保 uni-app CLI 的配置与 Vite 的配置一致。你可以在 package.json
或 vue.config.js
中检查相关配置。
5. 检查报错信息
仔细查看报错信息,找出具体的报错接口或模块。然后检查该接口是否在 Vite 的文档中有变化或已被移除。
6. 更新 uni-app 插件
如果你使用了 uni-app 的插件,确保这些插件也是最新版本,并且与 uni-app 4.06 兼容。
7. 参考官方文档和社区
查看 uni-app 和 Vite 的官方文档,以及社区中是否有类似的 issue 或解决方案。
8. 回滚版本
如果问题无法解决,你可以考虑暂时回滚到 uni-app 的旧版本,等待后续的修复版本发布。
npm install uni-app@4.05
9. 提交 Issue
如果问题仍然存在,可以考虑在 uni-app 的 GitHub 仓库中提交 issue,详细描述你的问题和环境信息,以便开发者更好地帮助你解决问题。
示例:检查 vite.config.js
假设你遇到了 vite.config.js
中的 defineConfig
报错,你可以检查是否有如下配置:
import { defineConfig } from 'vite';
import vue from '[@vitejs](/user/vitejs)/plugin-vue';
export default defineConfig({
plugins: [vue()],
// 其他配置
});