You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在deploy.sh中使用tsc命令编译tsx文件出现编译错误如何解决

问题解决方案

1 修复TS6131编译错误与输出覆盖问题

你当前脚本存在两个核心错误:

  • 多次调用tsc指定同一个--outFile参数,每次执行都会覆盖前一次的编译结果,完全无法得到正确的合并文件
  • --outFile参数仅支持amd或system两种模块规范,你没有指定模块参数,默认模块规范不支持合并输出,因此触发TS6131报错

可选解决方案:

  • 方案A(不需要合并单文件,推荐):放弃单文件输出,直接将所有tsx编译后输出到目标目录
    替换原step4的所有tsc命令为一行:
    node_modules/typescript/bin/tsc src/*.tsx --jsx preserve --esModuleInterOp --strictNullChecks false --outDir $TARGETFOLDER/$WEBFOLDERNAME
    
  • 方案B(需要合并为单个app.jsx):增加模块参数指定为system
    替换原step4的所有tsc命令为一行:
    node_modules/typescript/bin/tsc src/*.tsx --jsx preserve --esModuleInterOp --strictNullChecks false --module system --outFile $TARGETFOLDER/$WEBFOLDERNAME/app.jsx
    

2 修复严格模式类型报错

本地npm start不报错是因为你项目本地的tsconfig配置没有启用严格空值检查,而脚本中加了--strict参数强制启用了所有严格检查规则,因此触发了对象可能为null、never类型无对应属性的报错。

可选解决方案:

  • 方案A(推荐长期方案):根据报错提示修复代码中的类型问题,补充空值判断、为never类型变量添加明确类型定义
  • 方案B(临时规避方案):在tsc参数中添加--strictNullChecks false关闭严格空值检查,或者直接去掉--strict参数,和本地开发配置保持一致

3 其他需要修正的细节

  • 文件名大小写问题:你报错中出现的是IdeaDetails.tsx、PostList.tsx,但脚本中写的是小写开头的ideaDetails.tsx、PostLists.tsx,Linux系统大小写敏感,会触发文件找不到的错误,需要修正文件名拼写和大小写
  • 目录删除风险:原脚本rm -rf $TARGETFOLDER会直接删除后端整个resources目录,可能误删其他后端配置文件,建议修改为只删除前端对应的目录:
    # 替换原step1的目录操作代码
    rm -rf $TARGETFOLDER/$WEBFOLDERNAME
    mkdir -p $TARGETFOLDER/$WEBFOLDERNAME
    

内容的提问来源于stack exchange,提问作者Andrew Viera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:27:03