dcloudio / dcloudio/uni-app

hbuilderX 3.98 构建代码与hx内运行代码存在差异, hx中构建代码 tsconfig 的 useDefineForClassFields 未生效

Open
#4,687 2 comments 0 reactions 1 assignee Claimed by @Otto-J View on GitHub
uni 工程问题 打包异常
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

**问题描述**
之前的 [issues#4566](https://github.com/dcloudio/uni-app/issues/4566) 被关闭了, 但我测试后问题依然存在

这个问题我复测确认了可以复现, 但提到问答社区沉底了, 故在此处再发一遍寻求下帮助

问答社区报告地址: [报bug](https://ask.dcloud.net.cn/question/179517)
复现源码: [my-vue3-project.zip](https://ask.dcloud.net.cn/file/download/file_name-bXktdnVlMy1wcm9qZWN0Xy1f5Ymv5pysLnppcA==__url-Ly9hc2suZGNsb3VkLm5ldC5jbi91cGxvYWRzL3F1ZXN0aW9ucy8yMDIzMTAxMy9kZGMxYzM1ZDA3ZDliYTRjZmI4MTYwODI2N2NjMGY0ZA==)

经测试 hx 中构建的代码与 cli中构建的代码存在明显差异, 下列的bug在cli中不存在, 可以参考我最新上传demo项目

tsconfig中已配置 useDefineForClassFields: true
```
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"moduleResolution": "node",
"esModuleInterop": true,
"sourceMap": true,
"skipLibCheck": true,
"importHelpers": true,
"allowSyntheticDefaultImports": true,
"useDefineForClassFields": true,
"resolveJsonModule": true,
"lib": ["esnext", "dom"],
"types": ["@dcloudio/types"]
},
"exclude": ["node_modules", "unpackage"]
}
```
但构建后输出代码为:
```
class i{constructor(){this.a="1",this.b="3"}}
```

而相同代码在cli中构建结果如下
```
/** t函数为默认 defineProperty */
class b{constructor(){t(this,"a","1"),t(this,"b"),t(this,"c"),this.b="3"}}
```

**复现步骤**
[复现问题的步骤]
1. 创建任意项目, 在任意页面输入如下代码

```

import { onReady, onLoad } from '@dcloudio/uni-app'
class A {
private a: string = '1'
public b: string
c: string
}
onLoad(() => {
// 期望结果: { a: '1', b: undefined, c: undefined }
console.log(new A()) // 运行结果: { a: '1' }
})

```

**预期结果**
console.log(new A()) // { a: '1', b: undefined, c: undefined }

**实际结果**
console.log(new A()) // { a: '1' }

**系统信息:**
- 发行平台: H5/APP
- 操作系统: Android 8.1
- HBuilderX版本 3.98
- uni-app版本 3.98
- 设备信息 手机

**补充信息**
核心问题为 tsconfig中的 useDefineForClassFields 参数未生效, 这一参数规定了是否对calss属性进行初始化操作
我在cli中尝试复现该问题发现结果是正确的, 但 hbuilderX中构建出来就是错误的

我使用最新的 HX3.98 正式版测试问题依然存在, 应该是我没描述清楚的问题, 直接在HX里运行项目是没问题的, 但是发布H5, build之后生成的代码有这个问题, 可以参考我下列的图片

![image1](https://ask.dcloud.net.cn/uploads/answer/20240115/2541d2bf1c09181b8d07004ba9a87b34.png)

![image2](https://ask.dcloud.net.cn/uploads/answer/20240115/ef299f4ecf48b6a1971b03e587d6512e.png)

## **我猜测是hbuilderX在某处覆盖了我的tsconfig配置, 但没有找到具体位置**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.