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
您好,是否能够提供一下一个可以复现的项目?
更多关于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']
]
}

