【发布时间】:2019-12-01 22:48:31
【问题描述】:
在默认基于 TypeScript 的 create-react-app 项目中,使用 react-scripts 构建项目时仅显示第一个 TS 错误,但在运行 tsc 时显示所有错误。
项目用create-react-app foo --typescript初始化,初始化后只修改了src/index.tsx:
src/index.tsx src/index.tsx
console.log(typeof nonExistentVar);
console.log(typeof nonExistentVar);
console.log(typeof nonExistentVar2);
console.log(typeof nonExistentVar2);
export {};
package.json
export {};
{
"name": "foo",
"version": "0.1.0",
"private": true,
"dependencies": {
"@types/jest": "24.0.15",
"@types/node": "12.6.8",
"@types/react": "16.8.23",
"@types/react-dom": "16.8.5",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-scripts": "3.0.1",
"typescript": "3.5.3"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve"
},
"include": [
"src"
]
}
npm start 只显示第一个错误:
Failed to compile.
C:/foo/src/index.tsx
TypeScript error in C:/foo/src/index.tsx(1,20):
Cannot find name 'nonExistentVar'. TS2304
> 1 | console.log(typeof nonExistentVar);
| ^
2 | console.log(typeof nonExistentVar2);
3 | export {};
而tsc 会同时显示所有错误:
src/index.tsx:1:20 - error TS2304: Cannot find name 'nonExistentVar'.
1 console.log(typeof nonExistentVar);
~~~~~~~~~~~~~~
src/index.tsx:2:20 - error TS2304: Cannot find name 'nonExistentVar2'.
2 console.log(typeof nonExistentVar2);
~~~~~~~~~~~~~~~
Found 2 errors.
如何强制start 和build 脚本显示所有错误?
【问题讨论】:
-
如果编译器找不到名为
nonExistentVar的变量,它应该如何继续并显示更多错误?因为它找不到变量,所以它无法构建并显示它失败的原因。只显示第一个错误对我来说完全有意义。 -
它应该如何继续并显示更多错误 - 原始
tsc调用允许这样做。我不确定如何做到这一点,因此提出了这个问题。我的目标是列出项目构建中需要修复的所有错误,而不是一一修复。 -
我找到了这个github.com/facebook/create-react-app/blob/… 但是,关闭这个逻辑并没有帮助。您必须弹出并调整
scripts/build.js文件 -
@HarunYilmaz 感谢您的研究,我会检查一下。
标签: webpack create-react-app react-scripts