编译TypeScript到JS时触发TS18028错误,安装redis包后出现
解决TypeScript错误TS18028:Private identifiers are only available when targeting ECMAScript 2015 and higher
问题根源
Redis包内部代码使用了ES2015及以上版本才支持的私有标识符(以#开头的类私有成员),而你的TypeScript配置未明确指定编译目标版本,默认编译目标为ES3/ES5,这两个版本不支持该语法,因此触发报错。
解决步骤
1. 更新tsconfig.json配置
在compilerOptions中添加target字段,指定为ES2015或更高版本(推荐匹配你当前Node.js支持的版本,比如ES2020),同时补充Node.js环境常用配置:
{ "compilerOptions": { "types": ["node"], "target": "ES2020", // 可替换为ES2015/ESNext,根据Node版本选择 "module": "CommonJS", // Node.js默认使用CommonJS模块规范 "outDir": "./dist" // 建议将编译输出放到单独目录,避免与源码混淆 }, "include": ["index.ts"] // 明确指定需要编译的文件 }
2. 调整开发命令(可选但推荐)
修改dev命令,让tsc-watch读取tsconfig配置,避免命令行参数与配置文件冲突:
"dev": "tsc-watch --noClear --project tsconfig.json --onSuccess \"node ./dist/index.js\""
3. 验证修复
删除之前生成的index.js文件,重启开发命令,错误即可消除。
若仍有问题,排查以下点:
- 确认命令行参数未覆盖
target配置(比如是否加了--target ES5) - 检查Node.js版本是否支持你指定的ES版本(例如ES2020需要Node.js 14及以上)
内容的提问来源于stack exchange,提问作者RCKT
相关产品推荐
相关产品推荐

