簡體   English   中英

TypeScript 編譯器不發出導入的模塊

[英]TypeScript compiler is not emitting imported modules

我有一個項目(在 GitHub 上),它使用 TypeScript 編譯器的項目引用功能,所以它有根tsconfig.json文件和名為shared的子文件夾的tsconfig.json文件。

Shared子文件夾有 2 個文件:

  • User.ts
  • Point.ts

index.ts文件導入User模塊,例如

import User from './shared/User';

轉換后的文件放置在target文件夾下。 我遇到的問題是,由於tsc target文件夾具有Point .d.ts 和 .js 文件(不是index.ts導入)並且包含User文件(由index.ts導入)。

tsc -b --listEmittedFiles的輸出:

TSFILE: /home/user/Projects/test/target/index.js
TSFILE: /home/user/Projects/test/target/index.d.ts
TSFILE: /home/user/Projects/test/target/shared/Point.js
TSFILE: /home/user/Projects/test/target/shared/Point.d.ts
TSFILE: /home/user/Projects/test/target/shared/User.js
TSFILE: /home/user/Projects/test/target/shared/User.d.ts

如果我從index.ts刪除import表達式,則目標文件夾將按預期包含UserPoint腳本。

我的問題是:是tsc錯誤還是我做錯了什么?

tsc 3.33.4版本上進行了測試,結果相同。

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "outDir": "./target",
    "rootDir": "./source",
    "strict": true,
    "esModuleInterop": true
  },
  "references": [
    {
      "path": "./source/shared"
    }
  ]
}

shared文件夾的tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "composite": true,
    "strict": true,
    "esModuleInterop": true
  }
}

最后,我自己得到了解決方案!

子項目的tscconfig.json文件應該將輸出指向主項目的target/目錄!

因此,假設您有一個通用項目,其中source/目錄定義為rootDirtarget/目錄定義為outDir

source目錄中,您有兩個子項目: coregeometry (如圖所示它在這里)。

因此,它們都應該將outDir設置為主target/目錄,例如: ../../target/core../../target/geometry

或者,使用具有“擴展”屬性的配置繼承 在這種情況下,子項目的配置文件可以像這樣重寫( 示例):

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "composite": true
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM