hbuilderX 3.98 构建代码与hx内运行代码存在差异, hx中构建代码 tsconfig 的 useDefineForClassFields 未生效
- 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之后生成的代码有这个问题, 可以参考我下列的图片


## **我猜测是hbuilderX在某处覆盖了我的tsconfig配置, 但没有找到具体位置**
Contributor guide
Assessment
This issue has not been assessed yet.