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.06vue3  
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  
 ELIFECYCLECommand 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"  
  }  
}

图1
图2

3 回复

查看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.jsvite.config.ts 配置文件

确保你的 vite.config.jsvite.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.jsonvue.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()],
  // 其他配置
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!