uni-app 升级4.36后无法编译构建 提示 vite: Rollup failed to resolve import 问题

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 升级4.36后无法编译构建 提示 vite: Rollup failed to resolve import 问题

类别 信息
开发环境 Windows
操作系统版本 11
IDE HBuilderX
IDE版本 4.36
手机系统 Android
手机系统版本 Android 15
手机厂商 OPPO
手机机型 unkown
页面类型 vue
Vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project  
cd my-vue3-project  
npm init  
npm add sentry-uniapp

main.ts 中增加如下代码

import { createSSRApp } from "vue";  
import * as Sentry from 'sentry-uniapp'  
import App from "./App.vue";  
export function createApp() {  
  const app = createSSRApp(App);  
  console.log(Sentry)  
  return {  
    app,  
  };  
}

启动编译

npx uni -p app

预期结果:

正确编译,代码及依赖被正确打包并编译

实际结果:

编译失败,提示以下错误

Please note that in running mode, due to log output, sourcemap, and uncompressed source code, the performance and package size are not as good as release mode.  
Compiler version: 4.36(vue3)  
Compiling...  
[vite]: Rollup failed to resolve import "@sentry/types" from "/git/my-vue3-project/node_modules/sentry-uniapp/esm/index.js".  
This is most likely unintended because it can break your application at runtime.  
If you do want to externalize this module explicitly add it to  
`build.rollupOptions.external`

bug描述:

IDE从 hbuildx 4.05 升级到 4.36 ,SDK 也使用 npx @dcloudio/uvm@latest 升级到最新,启动 app 构建时,提示以下错误

Please note that in running mode, due to log output, sourcemap, and uncompressed source code, the performance and package size are not as good as release mode.  
Compiler version: 4.36(vue3)  
Compiling...  
[vite]: Rollup failed to resolve import "@sentry/types" from "/git/my-vue3-project/node_modules/sentry-uniapp/esm/index.js".  
This is most likely unintended because it can break your application at runtime.  
If you do want to externalize this module explicitly add it to  
`build.rollupOptions.external`

发现使用官方工程同样出现该情况。


9 回复

看着是三方依赖的问题,这不提示有个 ts 的依赖没有安装吗?


你提到的官方工程是具体指哪个工程,有什么问题?

回复 DCloud_UNI_OttoJi: npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

回复 d***@126.com: 就是无法识别第三方库的依赖

回复 d***@126.com: 举个例子,除了这个三方库,还有哪个依赖有问题

回复 DCloud_UNI_OttoJi: @turf/turf

截止发帖时间,最新4.36使用 pnpm 会有以上问题,需要使用 npm。 4.15以下则无该问题。

加一下 shamefully-hoist=true 试试,如果使用 npm 和 yarn 没问题,就用 yarn,依赖安装uniapp 不参与

在升级uni-app到4.36版本后遇到vite: Rollup failed to resolve import的问题,通常是由于依赖管理或配置更新导致的模块解析失败。下面我将提供一些可能的解决方案,这些方案主要通过修改配置文件或调整依赖关系来解决编译问题。由于无法直接访问你的项目代码和具体错误信息,以下是一些常见的排查和修复步骤,以及相关代码示例。

1. 检查并更新依赖

确保所有依赖包都已更新到兼容uni-app 4.36的版本。可以运行以下命令来更新项目依赖:

npm update

或者,如果使用的是yarn:

yarn upgrade

2. 配置vite插件

如果你在使用Vite作为构建工具,可能需要检查并更新Vite的配置。确保vite.config.js(或vite.config.ts)文件中的配置正确无误。以下是一个基本的Vite配置示例,适用于uni-app项目:

import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';

export default defineConfig({
  plugins: [uni()],
  resolve: {
    alias: {
      '@': '/src',  // 示例别名配置,根据实际情况调整
    },
  },
});

3. 检查Rollup配置

由于错误信息中提到了Rollup,可能需要直接调整Rollup的配置。虽然uni-app通常封装了这些配置,但在某些情况下你可能需要手动干预。在vite.config.js中,可以通过build.rollupOptions来配置Rollup:

export default defineConfig({
  // ...其他配置
  build: {
    rollupOptions: {
      external: ['some-external-module'],  // 外部依赖列表
      resolve: {
        modules: [path.resolve(__dirname, 'node_modules')],  // 解析模块路径
      },
    },
  },
});

4. 清理缓存

有时候,构建工具的缓存可能会导致问题。尝试清理缓存后重新构建:

npm run clean  // 如果你的package.json中有定义这个脚本
rm -rf node_modules/.vite  // 手动删除Vite缓存
rm -rf node_modules  # 删除node_modules后重新安装依赖
npm install

5. 查看详细错误信息

如果上述步骤都不能解决问题,尝试运行构建命令时加上--debug标志,以获取更详细的错误信息,这有助于进一步定位问题。

npm run dev -- --debug

或者

npm run build -- --debug

希望这些步骤能帮助你解决uni-app升级后遇到的编译问题。如果问题依旧存在,建议查看uni-app的官方文档或社区论坛,寻找是否有其他开发者遇到并解决了类似的问题。

回到顶部