Webpack遇到的問題
Webpack 遇到的問題
TL;DR常見 ts-loader 錯誤 「TypeScript emitted no output」,原因是 tsconfig.json 設了 noEmit: true(預設)。解法:Webpack build 時走 noEmit: false,開發階段(IDE 用)再 noEmit: true 互不干擾。
錯誤訊息
ERROR in ./src/index.tsx
Module build failed (from ./node_modules/ts-loader/index.js):
Error: TypeScript emitted no output for D:\GitProject\Webpack-Test-TypeScript\src\index.tsx.
at makeSourceMapAndFinish (...ts-loader/dist/index.js:52:18)
原因
tsconfig.json 的 noEmit: true 告訴 TS「不要產生輸出檔」,適合純 TS check(IDE / tsc --noEmit)。
但 Webpack 的 ts-loader 需要 TS 產生 .js 給它打包,所以 noEmit:true 會讓 ts-loader 拿不到輸出。
解法
// tsconfig.json
{
"compilerOptions": {
"noEmit": false // ⭐ 改成 false
}
}
或更乾淨:分兩個 tsconfig
// tsconfig.json(主要,Webpack 用)
{ "compilerOptions": { "noEmit": false } }
// tsconfig.check.json(IDE / CI 純 type check)
{ "extends": "./tsconfig.json", "compilerOptions": { "noEmit": true } }
# CI 用
tsc -p tsconfig.check.json # 只檢查不輸出
2026 年:其實別用 Webpack 了
Vite / Rspack / esbuild 處理 TS 比 ts-loader 快太多。新專案直接走 Vite,不用配這些設定。詳見 Webpack介紹 結尾的替代方案。