typescript - tsconfig noEmit måste vara sant


Jag använder create-react-app och jag har också några ts- och tsx-filer. I min tsconfig-fil (se nedan) satte jag noEmit till false eftersom js-filer behöver skapas. Men varje gång jag startar servern är noEmit satt till false med följande meddelande:

The following changes are being made to your tsconfig.json file:
   - compilerOptions.noEmit must be true

När noEmit är inställt på false genereras inte de js-filer som borde genereras från mina ts-filer, vilket betyder att appen inte uppdateras. Vad orsakar detta beteende? Finns det något sätt att undvika det? Eller är det enda alternativet att skapa en separat tsconfig för mappen med ts-filerna?

{
  "compilerOptions": {
    "target": "ES2017",
    "module": "esnext",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext",
      "ES2017"
    ],
    "allowJs": false,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true,
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "strictPropertyInitialization": false,
    "strictNullChecks": false,
    "strict": true,
    "sourceMap": true,
    "noEmit": true
  },
  "include": [
    "src"
  ],
  "exclude": [
    "node_modules"
  ]
}

Svar #1

Du behöver skriva över detta kompilationsalternativ i din webpack.config-fil, så här:

rules: [
     {
        test: /\.tsx?$/,
        loader: 'ts-loader',
        options: {
           compilerOptions: {
              "noEmit": false
           }
        },
        exclude: /node_modules/,
      },

Svar #2

Jag har skapat en Pull Request för att försöka fixa detta problem en gång för alla här: Länk

Relaterade artiklar