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

NX Monorepo中配置tsgo编译器时遭遇Schema校验错误

NX Monorepo中配置tsgo编译器时遭遇Schema校验错误

哎,我前阵子刚在自己的NX monorepo里折腾TypeScript 7的原生预览编译器(tsgo),完全懂你遇到的Schema校验报错有多闹心!下面是我踩坑后摸索出来的解决办法,亲测有效:

首先得搞清楚为啥会报错:NX的默认配置Schema里,build target的compiler字段只预定义了tsc、swc、esbuild这些常见选项,tsgo作为新出的预览版编译器,还没被加到默认的允许列表里,所以一修改就触发Schema校验失败。

给你两种解决思路,按需选:

  • 临时快速方案:跳过Schema校验
    如果你只是想快速测试tsgo的功能,不想折腾复杂配置,可以直接在project.json的build target里加个$schema: null,让NX跳过这个target的所有Schema校验。配置大概是这样:

    "targets": {
      "build": {
        "$schema": null,
        "options": {
          "target": "node",
          "compiler": "tsgo",
          // 你的其他build配置
        }
      }
    }
    

    不过要提醒你,这个方法是饮鸩止渴——关掉校验后,你写错其他配置参数NX也不会提醒,所以只适合短期测试用。

  • 规范长期方案:扩展NX的Schema
    要是想长期用tsgo,最好自己扩展NX的Schema,把tsgo加到compiler的允许值里:

    1. 在项目根目录新建一个自定义Schema文件,比如schemas/custom-build-schema.json,内容如下:
      {
        "extends": "@nx/js/src/builders/build/schema.json",
        "properties": {
          "compiler": {
            "type": "string",
            "enum": ["tsc", "swc", "esbuild", "tsgo"],
            "description": "指定项目构建使用的编译器"
          }
        }
      }
      
      (注意:如果你的项目是React/Vue这类,要把extends的路径改成对应包的build schema,比如@nx/react/src/builders/build/schema.json)
    2. 回到project.json的build target,指定用这个自定义Schema:
      "targets": {
        "build": {
          "$schema": "./schemas/custom-build-schema.json",
          "executor": "@nx/js:build",
          "options": {
            "target": "node",
            "compiler": "tsgo",
            // 你的其他build配置
          }
        }
      }
      

    这样既让NX认可tsgo这个编译器选项,又能保留其他配置项的Schema校验,完美兼顾规范和需求。

最后再补两个小提醒:

  • 确保你装的@typescript/native-preview是最新的预览版,旧版本可能和NX的适配有问题;
  • 配置完后跑nx build <你的项目名>测试,如果还有问题,加个--verbose参数看详细日志,能更快定位问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:34:29