Bug报告
🔎 搜索词
TSC,慢速,内存不足
🕗 版本与回归信息
Typescript版本4.9.3
Windows 11操作系统
- 这是一次崩溃
💻 代码
package.json
{
"name": "client",
"version": "0.1.0",
"proxy": "http://localhost:5000",
"private": true,
"type": "module",
"dependencies": {
"@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5",
"@fortawesome/fontawesome-svg-core": "^6.2.1",
"@fortawesome/free-solid-svg-icons": "^6.2.1",
"@fortawesome/react-fontawesome": "^0.2.0",
"@kasparund/kasparund_enums": "^0.0.148",
"@material/react-chips": "^0.15.0",
"@mui/icons-material": "^5.10.9",
"@mui/lab": "^5.0.0-alpha.107",
"@mui/material": "^5.10.13",
"@mui/styles": "^5.10.10",
"@mui/x-date-pickers": "^5.0.8",
"@react-google-maps/api": "^2.1.1",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^7.1.2",
"@types/history": "^5.0.0",
"@types/jest": "^27.4.1",
"@types/node": "^17.0.21",
"@types/prop-types": "^15.7.5",
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@types/react-redux": "^7.1.24",
"@types/react-router": "^5.1.19",
"@wojtekmaj/react-daterange-picker": "^3.4.0",
"add": "^2.0.6",
"apexcharts": "^3.35.5",
"base64url": "^3.0.1",
"blueimp-md5": "^2.18.0",
"chart.js": "^2.9.4",
"classnames": "^2.3.1",
"clsx": "^1.1.1",
"connected-react-router": "^6.9.1",
"country-data": "^0.0.31",
"customize-cra": "^1.0.0",
"dayjs": "^1.11.6",
"decimal.js": "^10.3.1",
"dotenv": "^8.2.0",
"final-form": "^4.20.7",
"final-form-material-ui": "^0.3.0",
"google-map-react": "^2.1.9",
"history": "^4.10.1",
"jsdom": "^20.0.2",
"jwt-decode": "^3.1.2",
"lodash": "^4.17.21",
"lodash.debounce": "^4.0.8",
"moment": "^2.29.4",
"oidc-client": "^1.11.5",
"query-string": "^7.1.1",
"ra-data-simple-rest": "^3.13.4",
"ra-tree-menu": "^1.0.0",
"react": "18",
"react-admin": "4.6.0",
"react-apexcharts": "^1.3.9",
"react-app-rewired": "^2.1.8",
"react-avatar": "^3.10.0",
"react-chartjs-2": "^2.11.1",
"react-circular-progressbar": "^2.0.4",
"react-confirm-alert": "^3.0.6",
"react-copy-button": "^0.2.3",
"react-country-flag": "^3.0.2",
"react-csv": "^2.0.3",
"react-csv-downloader": "^2.2.0",
"react-datetime-picker": "^3.2.0",
"react-day-picker": "^8.3.6",
"react-dom": "18",
"react-file-viewer": "^1.2.1",
"react-final-form": "^6.5.9",
"react-helmet": "^6.1.0",
"react-icons": "^4.2.0",
"react-json-view": "^1.21.3",
"react-loading": "^2.0.3",
"react-moment": "^1.1.1",
"react-pdf": "^5.2.0",
"react-perfect-scrollbar": "^1.5.8",
"react-query": "^3.39.2",
"react-router-dom": "^6.4.3",
"react-select": "^5.6.1",
"react-swipeable-views": "^0.14.0",
"react-use-draggable-scroll": "^0.4.7",
"validator": "^13.7.0",
"yarn": "^1.22.17"
},
"scripts": {
"start": "vite",
"build": "vite build",
"serve": "vite preview",
"lint": "eslint --ext .js,.jsx,.ts,.tsx src --color",
"format": "prettier --write 'src/**/*.{ts,tsx,scss,css,json}'",
"typecheck": "tsc --project './tsconfig.json'",
"typecheck-build": "tsc -b --verbose",
"watch": "tsc --watch --noEmit --project './tsconfig.json'",
"test": "vitest",
"coverage": "vitest run --coverage"
},
"eslintConfig": {
"extends": [
"react-app",
"plugin:prettier/recommended"
],
"env": {
"browser": true,
"node": true
}
},
"prettier": {
"printWidth": 100,
"bracketSpacing": true,
"trailingComma": "es5",
"semi": false,
"singleQuote": true,
"tabWidth": 2
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.+(js|jsx|ts|tsx)": [
"eslint --fix",
"git add"
],
"*.+(ts|tsx|scss|css|json)": [
"prettier --write",
"git add"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@types/chart.js": "^2.9.35",
"@types/react-helmet": "^6.1.5",
"@types/react-router-dom": "^5.3.3",
"@typescript-eslint/eslint-plugin": "^5.38.0",
"@typescript-eslint/parser": "^5.21.0",
"@vitejs/plugin-react": "^2.2.0",
"@vitest/coverage-c8": "^0.25.1",
"babel-eslint": "^10.1.0",
"eslint-config-prettier": "^8.5.0",
"eslint-config-react-app": "^7.0.1",
"eslint-import-resolver-typescript": "^2.7.1",
"eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-jest": "^26.1.5",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-react-hooks": "^4.5.0",
"eslint-plugin-unused-imports": "^2.0.0",
"eslint-webpack-plugin": "^3.1.1",
"husky": "^8.0.2",
"lint-staged": "^12.4.1",
"prettier": "^2.6.2",
"prettier-eslint": "^14.0.1",
"prettier-eslint-cli": "^5.0.1",
"source-map-loader": "^3.0.1",
"ts-loader": "^9.2.7",
"typescript": "^4.9.3",
"vite": "^3.2.3",
"vite-tsconfig-paths": "^3.5.2",
"vitest": "^0.25.1"
},
"resolutions": {
"//": "See https://github.com/facebook/create-react-app/issues/11773, can be removed once we switch to react-scripts v5",
"react-error-overlay": "6.0.9"
}
}
tsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"lib": ["dom", "dom.iterable", "esnext"],
"types": ["vite/client", "vitest/globals"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"noFallthroughCasesInSwitch": true,
"noImplicitAny": false,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"rootDir": "./src",
"baseUrl": "./src"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "coverage", "artifacts", "public"]
}
🙁 实际行为
我使用 yarn typecheck
,它只是运行 tsc --project './tsconfig.json'
。大约一个小时后,我遇到了一次内存不足的崩溃:
$ yarn typecheck
yarn run v1.22.5
$ tsc --project './tsconfig.json'
<--- Last few GCs --->
[10320:000001B789ABB6C0] 1504038 ms: Mark-sweep 4034.6 (4129.2) -> 4018.9 (4128.4) MB, 1549.7 / 0.0 ms (average mu = 0.205, current mu = 0.003) allocation failure; scavenge might not succeed
[10320:000001B789ABB6C0] 1505584 ms: Mark-sweep 4034.6 (4128.4) -> 4018.9 (4128.4) MB, 1535.6 / 0.0 ms (average mu = 0.115, current mu = 0.007) allocation failure; scavenge might not succeed
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 00007FF75CF51B7F node_api_throw_syntax_error+203775
2: 00007FF75CED1556 v8::internal::wasm::WasmCode::safepoint_table_offset+63558
3: 00007FF75CED28C2 v8::internal::wasm::WasmCode::safepoint_table_offset+68530
4: 00007FF75D9747F4 v8::Isolate::ReportExternalAllocationLimitReached+116
5: 00007FF75D95FB52 v8::Isolate::Exit+674
6: 00007FF75D7E1BBC v8::internal::EmbedderStackStateScope::ExplicitScopeForTesting+124
7: 00007FF75D7EEE9D v8::internal::Heap::PublishPendingAllocations+1117
8: 00007FF75D7EBF27 v8::internal::Heap::PageFlagsAreConsistent+3367
9: 00007FF75D7DE657 v8::internal::Heap::CollectGarbage+2039
10: 00007FF75D7F5013 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath+2099
11: 00007FF75D7F58BD v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath+93
12: 00007FF75D8050F3 v8::internal::Factory::NewFillerObject+851
13: 00007FF75D4F6825 v8::internal::DateCache::Weekday+1349
14: 00007FF75DA11E81 v8::internal::SetupIsolateDelegate::SetupHeap+558193
15: 00007FF6DE4F97C6
error Command failed with exit code 134.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
🙂 预期行为
tsc
在几秒钟内成功运行。
8条答案
按热度按时间chhqkbe11#
src
的内容是什么?tjrkku2a2#
src
的内容是什么?一个基本的React应用。这里是
src
的统计信息:总结
总数:359个文件,26586行代码,232条注解,2415个空白行,总共29233行
语言
6l7fqoea3#
看起来很正常;这最多只需要几秒钟。在少数文件中可能有一些非常奇怪的事情导致了崩溃。如果你能缩小范围,将可以发布的文件列出来,我们可以进行调查,但就目前而言,如果没有具体的重现步骤,我们无法做太多事情。
8e2ybdfx4#
感谢您的回复。这只是一个基本的应用。但是,是否有一些我可以用我的设置测试的TypeScript项目示例?
aurhwmvo5#
@sebastianbuechler 我正在经历相同的问题,你找到了任何解决方案吗?
uqdfh47h6#
@sebastianbuechler 我正在经历相同的问题,你找到任何解决方案了吗?
没有。问题仍然存在。
6g8kf2rb7#
我正在经历这个问题,在5.0.2版本中。
7kjnsjlb8#
我正在经历这个问题,在5.0.2版本中。
就我的情况而言,当我将skipLibCheck
false
修改为true
时,问题得到了解决。