繁体   English   中英

TSC 正在逆着 tsconfig.json 文件的方向编译 node_modules 和类型声明文件

[英]TSC is compiling node_modules and type declaration files against the direction of the tsconfig.json file

我已经解决了一个星期的问题,我很困惑。 疯狂的部分是这个应用程序已经编译好几个月了,这似乎是自发发生的,没有改变任何应该影响它的东西。 想想看,我从 WSL 升级到了 WSL2,大概就是这个时候开始的,可能是巧合。

项目结构

/📁server
 ⚙tsconfig.json

    /📁dist
       server.js
        /📁api
            /📁v1
                index.js
                /📁accountDataFunctions
                  duplicates.js
                  notations.js
                  ...
                /📁sqlQueryGeneration
                  selectQuery.js
                  updateQuery.js

    /📁src
       server.ts
        /📁api
            /📁v1
                index.ts
                /📁accountDataFunctions
                  duplicates.ts
                  notations.ts
                  ...
                /📁sqlQueryGeneration
                  selectQuery.ts
                  updateQuery.ts

tsconfig.json

// ⚙tsconfig.json
{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "resolveJsonModule": true,
    "removeComments": true,
    "strict": false,
    "baseUrl": "./",
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "skipLibCheck": true,⭐
    "forceConsistentCasingInFileNames": true,
    "moduleResolution": "node",
    // "watch": true
  },
  "exclude": [
    "node_modules"
  ],
  "include": [
    "src"
  ],
  "watchOptions": {
    "watchFile": "useFsEvents",
    "watchDirectory": "useFsEvents",
    "fallbackPolling": "dynamicPriority"
  }
}
tsc --showFiles
//30x files in this directory (type definitions):
/home/surface/.nvm/versions/node/v14.15.4/lib/node_modules/typescript/lib/lib.es6.d.ts

//20x files in this directory (type definitions):
/mnt/c/Dev/Projects/debtportfol/server/node_modules/@types/node/globals.d.ts

// (this is actually my project root directory)
/mnt/c/Dev/Projects/debtportfol/

//50x files in this directory which are about 35 correct files, and 15 type definitions:
io/server/src/api/v1/generalFunctions/getDateAndTime.ts
/mnt/c/Dev/Projects/debtportfol/server/src/api/v1/generalFunctions/columns.ts
/mnt/c/Dev/Projects/debtportfol/server/node_modules/axios/index.d.ts
/mnt/c/Dev/Projects/debtportfol/server/node_modules/@types/long/index.d.ts

我已经阅读了官方 TS 文档,尝试卸载和重新安装,修改包含/排除语句几个小时。 我真的不明白为什么这似乎突然发生了。

我还注意到--watch flag似乎也停止了工作。 再说一次,我已经在这个应用程序上工作了 9 个月,以前这些都不是问题。

{
    "main": "server.js",
    "scripts": {
        "serve": "tsc && concurrently \"tsc --watch\" \"nodemon dist/server.js\"",
        "start": "tsc && node dist/server.js",
        "startNormal": "node dist/server.js",
        "devstart": "nodemon run dist/server.js",
        "build": "tsc"
    },
    "dependencies": {
        "@stripe/stripe-js": "^1.9.0",
        ...
        "uuid": "^8.3.0"
    },
    "devDependencies": {
        "@types/axios": "^0.14.0",
        ...
        "concurrently": "^5.3.0",
        "nodemon": "^2.0.3",
        "typescript": "^4.2.3"
    }
}

想想看,我从 WSL 升级到了 WSL2,大概就是这个时候开始的,可能是巧合。

至少对于nodemon / --watch功能来说,这并非巧合。 有关原因详细信息,请参阅我的答案。 简短的回答——WSL2 中的 NTFS 文件系统支持与 WSL1 中的完全不同,目前 WSL2 中不完全支持inotify 如果可能,请将您的代码移动到 ext4 驱动器下的某个位置(例如/home/surface/projects )或保留一个单独的 WSL1 实例以供此使用。

我想不出导致 TSC 更改的原因,但它也有可能纠正这些。

无论如何,NTFS(WSL2 下的 9P 协议)上的 WSL2 性能现在非常糟糕,以至于您真的想尽可能坚持使用 ext4。 当我为我的日常驱动程序运行 WSL2 时,我会为任何在 NTFS 驱动器上甚至是远程文件密集型的操作(例如rsyncs3cmd同步操作)保持一个 WSL1 实例的最新状态。 例如,WSL2 Linux kernel 项目的 WSL2 Linux kernel 项目的git clone仅在我的 ext4 /home/user上花费了大约 10 秒,但在/mnt/c/...上花费了大约 10 秒,但超过了 1.0 分钟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM