You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在全新Nest.js项目中彻底忽略React.js源码文件?

解决Nest.js编译时忽略React客户端目录的问题

我之前碰到过一模一样的情况——明明在tsconfig里排除了client目录,Nest编译还是报JSX相关的错误。核心原因是TypeScript的exclude规则不是“强制忽略”,它有个前提:这些文件没有被显式引用,也不在include的匹配范围内。下面是具体的排查和解决步骤:

1. 检查Nest CLI的专属配置

Nest.js的CLI工具(nest start命令)有自己的编译逻辑,有时候会忽略根目录tsconfig的exclude设置。你需要在项目根目录的nest-cli.json里也加上排除规则:

{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "deleteOutDir": true,
    "exclude": ["client", "node_modules", "dist"] // 新增这行排除规则
  }
}

2. 明确指定编译范围(用include替代默认匹配)

默认情况下,TypeScript会匹配所有**/*文件,这时候exclude只是排除其中一部分,但如果有任何代码不小心引用了client目录的文件,exclude就失效了。所以最好在tsconfig里明确指定要编译的文件:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true
  },
  "include": ["src/**/*"], // 只编译src目录下的所有文件
  "exclude": ["client", "node_modules", "dist"]
}

3. 检查是否有意外的文件引用

全局搜索你的Nest.js代码(src目录下),看看有没有不小心import了client目录的文件,比如:

import { someComponent } from '../client/src/components/SomeComponent';

如果有这种情况,TypeScript会强制编译被引用的文件,不管exclude怎么设置,必须删掉这类引用。

4. 强制指定tsconfig启动Nest

如果上面的步骤都没解决,可以在启动脚本里明确指定使用根目录的tsconfig,确保Nest CLI完全遵循你的配置:

修改package.json里的start:dev脚本:

"scripts": {
  "start:dev": "nest start --watch --project tsconfig.json"
}

验证方法

先执行tsc --noEmit命令,这个命令会做编译检查但不会生成文件,如果没有再报JSX错误,说明配置生效了,再启动npm run start:dev就没问题了。

内容的提问来源于stack exchange,提问作者Nikita Pavlovski

火山引擎 最新活动