HBuilderX 编译时会将 theme.json 转换为 Unicode 编码导致微信开发者工具报错

HBuilderX 编译时会将 theme.json 转换为 Unicode 编码导致微信开发者工具报错

产品分类:

uniapp/小程序/微信

PC开发环境操作系统:

Windows

PC开发环境操作系统版本号:

22H2

HBuilderX类型:

正式

HBuilderX版本号:

4.85

第三方开发者工具版本号:

稳定版 Stable Build (1.06.2504060)

基础库版本号:

3.11.2

项目创建方式:

HBuilderX

示例代码:

fix-theme:

// 修复 uni-app 编译后的 theme.json 文件 // 解决 Unicode 编码和 BOM 问题

const fs = require(‘fs’); const path = require(‘path’);

// 主题配置(直接在脚本中定义,避免编码问题) const themeConfig = { “light”: { “navigationBarTextStyle”: “black”, “navigationBarBackgroundColor”: “#F8F8F8”, “backgroundColor”: “#F8F8F8”, “backgroundTextStyle”: “light”, “tabBarColor”: “#666666”, “tabBarSelectedColor”: “#2a82e4”, “tabBarBackgroundColor”: “#ffffff”, “tabBarBorderStyle”: “black” }, “dark”: { “navigationBarTextStyle”: “white”, “navigationBarBackgroundColor”: “#1a1a1a”, “backgroundColor”: “#121212”, “backgroundTextStyle”: “dark”, “tabBarColor”: “#888888”, “tabBarSelectedColor”: “#64b5f6”, “tabBarBackgroundColor”: “#1a1a1a”, “tabBarBorderStyle”: “white” } };

// 目标文件路径 const targetTheme = path.join(__dirname, ‘…/unpackage/dist/dev/mp-weixin/theme.json’);

try { // 检查目标目录是否存在 const targetDir = path.dirname(targetTheme); if (!fs.existsSync(targetDir)) { console.error(‘❌ 目标目录不存在,请先编译项目’); process.exit(1); }

// 将配置转换为 JSON 字符串(无 BOM,UTF-8) const themeContent = JSON.stringify(themeConfig, null, 2);

// 写入目标文件(确保无 BOM) fs.writeFileSync(targetTheme, themeContent, { encoding: ‘utf8’, flag: ‘w’ });

console.log(‘✅ theme.json 已成功修复’); console.log(’? 目标文件:’, targetTheme); console.log(’? 内容预览:’, themeContent.substring(0, 100) + ‘…’); } catch (error) { console.error(‘❌ 修复失败:’, error.message); process.exit(1); }


### 操作步骤:
每一次运行打包都会出现

### 预期结果:
正常运行和发行使用

### 实际结果:
微信开发工具报错:  
[] Cannot read properties of undefined (reading 'navigationBarTextStyle')  
TypeError: Cannot read properties of undefined (reading 'navigationBarTextStyle')  
at D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\theme.js:2:2949  
at Array.forEach (<anonymous>)  
at mergeThemeJSONToAppJSON (D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\theme.js:2:2757)  
at checkAppJSON (D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\app\appJSON.js:2:1258)  
at D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\app\appJSON.js:2:4242  
at i.scheduler (D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\reactiveCache.js:2:1702)  
at r (D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\node_modules.wxvpkg\@vue\reactivity\dist\reactivity.cjs.js:1:708)  
at effect (D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\node_modules.wxvpkg\@vue\reactivity\dist\reactivity.cjs.js:1:403)  
at ReactiveJSONCompiler.registerOrGet (D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\reactiveCache.js:2:1682)  
at D:\Program Files (x86)\Tencent\微信web开发者工具\code\package.nw\js\common\miniprogram-builder\modules\corecompiler\original\json\reactiveCache.js:2:3413(env: Windows,mp,1.06.2504060; lib: 3.11.2)

8 回复

经排查,问题产生的原因是 ide 未使用 utf-8 格式编辑 json 文件,导致了不符合预期的编码内容
hbuilderx 右下角提供了编码方式修改入口,改成 utf-8 即可


theme.json 文件发一下

{ “light”: { “navigationBarTextStyle”: “black”, “navigationBarBackgroundColor”: “#F8F8F8”, “backgroundColor”: “#F8F8F8”, “backgroundTextStyle”: “light”, “tabBarColor”: “#666666”, “tabBarSelectedColor”: “#2a82e4”, “tabBarBackgroundColor”: “#ffffff”, “tabBarBorderStyle”: “black” }, “dark”: { “navigationBarTextStyle”: “white”, “navigationBarBackgroundColor”: “#1a1a1a”, “backgroundColor”: “#121212”, “backgroundTextStyle”: “dark”, “tabBarColor”: “#888888”, “tabBarSelectedColor”: “#64b5f6”, “tabBarBackgroundColor”: “#1a1a1a”, “tabBarBorderStyle”: “white” } }

theme.json也不会进行转化吧,你是什么设备测试的?什么时候遇到的这个问题?

回复 DCloud_UNI_JBB: 如果需要可以远程查看我电脑相关配置以及运行日志

回复 DCloud_UNI_JBB: 我是使用的win10系统,就是上面的相关版本,我是给微信小程序适配的深色模式,然后在运行和发布版本的时候都会有这个问题

回复 1***@qq.com: im里面私聊发我一个产物和报错截图

回复 DCloud_UNI_JBB: OK

回到顶部