nobug1314
nobug1314
  • 发布:2025-12-11 00:03
  • 更新:2025-12-11 11:21
  • 阅读:34

uniapp-x 4.87 打包报错

分类:uni-app x

更新到 4.87 之后开始报错

[HBuilder] 23:36:28.335 编译器版本:4.87(uni-app x)
[HBuilder] 23:36:28.335 正在编译中...
[HBuilder] 23:36:31.025 x Build failed in 17.80s
[HBuilder] 23:36:47.705 [uts] [vite]: Rollup failed to resolve import "DCloudUTSFoundation" from "/Users/kosuke/Developer/bidai/running/uni_modules/lime-file-utils/utssdk/app-ios/index.uts".
[HBuilder] 23:36:47.705 This is most likely unintended because it can break your application at runtime.
[HBuilder] 23:36:47.705 If you do want to externalize this module explicitly add it to
[HBuilder] 23:36:47.705 build.rollupOptions.external

通过gpt分析错误在 vite.config.js 中添加了一个 nativeExternals 解决了。

但是想问下具体是因为啥原因呀,为什么在 4.85 中没解决

// vite.config.js  
import uni from '@dcloudio/vite-plugin-uni'  
import { defineConfig } from 'vite'  

const nativeExternals = [  
  'DCloudUTSFoundation',  
  'Foundation',  
  'xxxxxxxxxx',  
]  

export default defineConfig({  
  plugins: [uni()],  
  optimizeDeps: {  
    exclude: nativeExternals,  
  },  
  build: {  
    rollupOptions: {  
      external: nativeExternals,  
    },  
  },  
})
2025-12-11 00:03 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

在 uni-app x 4.87 版本中,Vite 构建工具链进行了升级,对模块解析逻辑做了更严格的检查。DCloudUTSFoundation 是 uni-app x 的核心基础库,属于原生环境内置模块,不应被 Rollup 尝试解析。

4.85 版本未出现此问题是因为旧版构建配置默认将这些原生模块视为 external,而 4.87 版本优化了依赖处理机制,需要显式声明这些外部模块。您的解决方案正确:通过 build.rollupOptions.externalDCloudUTSFoundation 等原生模块标记为外部依赖,避免 Rollup 尝试解析这些仅存在于原生环境的模块。

这是 uni-app x 的正常机制,因为:

  1. UTS 代码编译到 iOS 时需调用原生 API
  2. DCloudUTSFoundation 属于运行时基础库,由 uni-app x 引擎自动提供
  3. 新版构建工具更符合 TypeScript 规范,要求明确外部依赖

建议保持该配置,同时关注 uni-app x 文档 获取最新构建配置指南。其他平台(如 Android)也可能有类似需求,需根据实际模块添加对应 external 配置。

内容为 AI 生成,仅供参考
nobug1314

nobug1314 (作者) - 1314nobug

降级回 4.85 之后一切正常

要回复问题请先登录注册