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

TypeScript构建后如何用fs.readdirSync仅筛选.js文件

解决方案

1. 修正文件读取路径

你的代码当前硬编码读取src/models目录——这是源码目录,原本就存放着.ts源码文件。而编译后的.js产物实际存放在dist/models目录下(对应tsconfig.json的outDir配置)。你需要将读取路径改为编译后的产物目录:

// 用__dirname获取当前执行文件的所在目录,避免依赖项目根目录的动态变化
const modelsDir = path.join(__dirname, './models');

// 若需要兼容开发/生产环境,可增加环境判断:
// const isProduction = process.env.NODE_ENV === 'production';
// const modelsDir = isProduction 
//   ? path.join(__dirname, './models') 
//   : path.resolve(__dirname, '../src/models');

fs.readdirSync(modelsDir)
    .filter((file) => {
        console.log('file', file);
        return /\.model\.js$/.test(file) && file !== currentFileName;
    })
    .forEach((file) => {});

2. 严格过滤.js文件

将过滤用的正则表达式从匹配.model.(js|ts)改为仅匹配.model.js,直接排除.ts文件:

// 替换原过滤规则
return /\.model\.js$/.test(file) && file !== currentFileName;

3. 清理源码目录的残留.js文件

如果src/models目录中意外出现.js文件(比如手动生成、工具误输出),可以在构建脚本中添加清理逻辑,彻底避免混淆:

"build": "rimraf dist && rimraf src/**/*.js src/**/*.js.map && tsc --project tsconfig.json && tsc-alias -p tsconfig.json"

核心问题总结

你的tsconfig.json配置本身是正确的(rootDir与outDir分离),问题根源在于代码读取了错误的目录(源码目录而非编译产物目录),同时过滤规则没有严格限定只保留.js文件。调整以上两点后即可解决问题。

内容的提问来源于stack exchange,提问作者RAHUL KUNDU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:55:26