uni-app hbuilderx创建项目(vue3)自动导入插件unplugin-auto-import与uni-cloud冲突

uni-app hbuilderx创建项目(vue3)自动导入插件unplugin-auto-import与uni-cloud冲突

开发环境 版本号 项目创建方式
Windows Windows 11 家庭中文版 HBuilderX

操作步骤:

直接运行到 “安卓手机“或 ”安卓模拟器“都是无法正常通过

预期结果:

实际结果:

bug描述:

为啥会冲突,真没有看懂,没有看到uni-cloud.es.js这文件有导出 h 呢,我项目也没有用到uni-cloud

[plugin:commonjs--resolver] node_modules/[@dcloudio](/user/dcloudio)/uni-cloud/dist/uni-cloud.es.js (1:8718): Identifier "h" has already been declared
import { defineConfig } from 'vite'  
import uni from '[@dcloudio](/user/dcloudio)/vite-plugin-uni'  
import AutoImport from 'unplugin-auto-import/vite'  

/**  
 * [@type](/user/type) {import('vite').UserConfig}  
 */  

export default defineConfig({  
    build: {  
        sourcemap: true,  
    },  
    plugins: [  
        uni(),  
        AutoImport({  
            include: [  
                /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx  
                /\.vue$/,  
                /\.vue\?vue/, // .vue  
            ],  
            imports: [  
                'vue',  
                {  
                    vue: [  
                      ['h', '_h'], // 临时解决uni-cloud.es.js与vue冲突问题:Identifier "h" has already been declared  
                   ],  
                },  
                'uni-app',  
                'pinia',  
                {  
                    '@/js/api': [['default', 'api']],  
                },  
                {  
                    '@/js/api': ['getApis'],  
                },  
                {  
                    '@/js/config': [['default', 'cfg']],  
                },  
            ],  

            dirs: ['./hooks', './uni_modules/mescroll-uni/hooks/**'],  

            exclude: [  
                // 排除冲突的文件  
            ],  
            //defaultExportByFilename: false,  
            //dts:false,  
            dts: 'auto-imports.d.ts',  

            vueTemplate: true,  
        }),  
    ],

更多关于uni-app hbuilderx创建项目(vue3)自动导入插件unplugin-auto-import与uni-cloud冲突的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

您好,是否能够提供一下一个可以复现的项目?

更多关于uni-app hbuilderx创建项目(vue3)自动导入插件unplugin-auto-import与uni-cloud冲突的实战教程也可以访问 https://www.itying.com/category-93-b0.html


大佬,咱没有后文了呢,已提供了复现的项目压缩包,有分析下啥原因吗?

回复 aliang888: 你这应该是自动引入了所有文件,但是uniui组件中又有使用 unicloud的地方导致的,导致还是会自动引入unicloud,但是又没有开启unicloud开发环境导致的

我的临时解决办法就是,直接把HBuilderX\plugins\uniapp-cli-vite\node_modules@dcloudio\uni-cloud\dist\uni-cloud.es.js 文件里面的h变量名随便改了个名字就行(我项目没用到uni-cloud),可以编译通过,并在安卓端运行起来 h_uniIdToken = “uniIdToken”,

这个问题的核心在于 unplugin-auto-import 插件自动导入了 Vue 的 h 函数,而 uni-cloud 内部也声明了同名变量 h,导致命名冲突。虽然你的项目没有直接使用 uni-cloud,但依赖链中可能包含了该模块。

从你的配置可以看出,你已经找到了解决方案:通过别名映射将自动导入的 h 重命名为 _h

{
  vue: [
    ['h', '_h']
  ]
}
回到顶部