升级hbuilderx后uni-app vue3项目中commjs模块引入报错

升级hbuilderx后uni-app vue3项目中commjs模块引入报错

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

示例代码:

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

export default defineConfig({  
    build: {  
        sourcemap: true,  
        minify: 'terser',  
        terserOptions: {  
            compress: {  
                drop_console: true,  
            },  
        },  
    },  
    plugins: [  
        uni(),  
        commonjs(),  
    ],  
});

操作步骤:

  • h5项目运行至浏览器

预期结果:

  • 项目正常运行

实际结果:

  • 页面空白,控制台报错 Uncaught SyntaxError: Duplicate export of 'default' (at jsrsasign.js?v=a578b4df:16682:3)

bug描述:

hbuilderx从3.99升级至4.45后,vue3项目中的jsrsasign模块报错 Uncaught SyntaxError: Duplicate export of 'default' (at jsrsasign.js?v=a578b4df:16682:3),已经在vite.config.js中做了commjs模块转换。


更多关于升级hbuilderx后uni-app vue3项目中commjs模块引入报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

提供个复现工程吧,并实际打印一下导入的值是什么。这个报错是 重复的 export defalut 导出

更多关于升级hbuilderx后uni-app vue3项目中commjs模块引入报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


复现工程我在评论区发了个压缩包,导入时就直接‘import * as util from ‘@/scripts/util.js’’这样导入的

回复 AresGG: 试试 optimizeDeps: { include: [‘jsrsasign/lib/jsrsasign.js’], esbuildOptions: { mainFields: [‘main’, ‘module’] // 双模式兼容 } }, plugins: [ uni(), commonjs(), ],

回复 恭喜n发财: 牛的,老哥,可以了,我在网上一直没搜到怎么解决

回复 AresGG: deepseek是个好东西

回复 恭喜n发财: 我也用了deepseek回答,它给我的代码和你的不一样,我用了还是报错

复现工程

这个报错是因为HBuilderX 4.45版本对Vite构建工具进行了升级,导致CommonJS模块转换出现了冲突。针对你的问题,可以尝试以下解决方案:

  1. 首先确认是否真的需要使用vite-plugin-commonjs插件,因为Vite原生支持ES模块,建议优先使用ES模块格式的依赖包。

  2. 如果必须使用CommonJS模块,可以修改vite.config.js配置:

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

export default defineConfig({
  build: {
    sourcemap: true,
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true,
      },
    },
  },
  plugins: [uni()],
  optimizeDeps: {
    include: ['jsrsasign']
  }
})
  1. 或者尝试使用@originjs/vite-plugin-commonjs替代原来的插件:
import commonjs from '[@originjs](/user/originjs)/vite-plugin-commonjs'
回到顶部