m***@163.com
m***@163.com
  • 发布:2024-07-26 17:15
  • 更新:2025-08-15 14:53
  • 阅读:1210

Invalid value "iife" for option "output.format" - UMD and IIFE output formats are not supported

分类:HBuilderX

uniapp打包app,报错Invalid value "iife" for option "output.format" - UMD and IIFE output formats are not supported for code-splitting builds.
代码在浏览器端运行正常,编译打包时报错;
因为项目要解析markdown,安装bytemd插件后,出现了这个问题,请问有什么解决方法吗

2024-07-26 17:15 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com - 凡凡凡ok

解决了吗

1***@qq.com

1***@qq.com

+1 使用动态import后出现该问题

  • 9***@qq.com

    解决不了,直接放弃,不支持打包

    2025-04-23 09:30

1***@qq.com

1***@qq.com - 1111

使用了 动态import 或者 异步导入模块功能,需要用条件编译排除掉 app不支持异步导入。
// #ifdef H5
const { default:} = await import("xxxx")
// #endif

2***@qq.com

2***@qq.com

原因在于某些依赖或者其子依赖使用了动态导入触发代码分割(Chunk)但iife不支持代码分割,@dcloudio/vite-plugin-uni会强制使用iife格式编译安卓会覆盖vite显式声明使用es格式和禁用代码分割。

解决办法是通过vite插件通过configResolved钩子来设置es格式

{  
      name: "force-es-output",  
      apply: "build", // 仅在构建时应用  
      enforce: "post", // 确保在其他插件之后执行  
      configResolved(config) {  
        if (!config.build.rollupOptions) {  
          config.build.rollupOptions = {};  
        }  
        config.build.rollupOptions.output = {  
          ...config.build.rollupOptions.output,  
          format: "es",  
          chunkFileNames: "chunks/[name]-[hash].js",  
          entryFileNames: "[name]-[hash].js",  
          manualChunks(id) {  
            if (id.includes("node_modules/@safe-global")) {  
              return "safe-global"; // 单独打包 @safe-global 相关模块  
            }  
            if (id.includes("node_modules")) {  
              return "vendor"; // 其他依赖打包到 vendor chunk  
            }  
          },  
        };  
      },  
    }

要回复问题请先登录注册