Visual Studio 2022 Typescript Intellisense
Jag har en medelstor React-app som är hostad inom ett ASP.NET Core WebApi-projekt. Jag har omkring 100 ts/tsx-filer och ett fåtal js-filer skapade med standard React-mallen. Under 6 månader var utvecklingsupplevelsen fantastisk. Intellisense, referensnavigering och förslag på felupplösning nästan omedelbara. Förra veckan uppdaterade jag VS2022 Pro 2022 (64-bit) till V17.5.5. Initellicode 2.2, TypeScript Tools, 17.0.20105.2003. Nu är VS2022 nästan oanvändbart. Tydligen startar en språkservice en separat Node-instans för att hantera JS/TS-arbete. Den Node-processen verkar utnyttja CPU:n maximalt, äter upp ~0. 7 GB minne. Inte under felsökning men bara genom att ha lösningen öppen. Jag skapade ett nytt sandbox-projekt från samma mall. Lade till några ts-filer, inget exotiskt, bara enkla typdefinitioner och de npm-paket jag behöver. Samma sak. Det tar 13-15 sekunder att hålla musen över en typ innan Intellisense känner igen den. Kompileringsfel tar minst lika lång tid. Jag får en framstegsindikator när jag använder 'Gå till definition'. Allt detta var omedelbart på samma maskin i månader. Märkligt nog är körningen av lösningen samma hastighet som alltid. Endast textredigeringsupplevelsen påverkas. Saker jag har försökt:
- Raderade node_modules + package-lock.json, flera gånger, startade om
- Raderade dold .vs-mapp, starta om
- Ny sandlåda med samma mall, all JS fungerar bra. Lägg till TS - problemet återkommer
- Avinstallerade och installerade om VS2022, startade om
- Justerade VS-alternativ som hittats online, inaktiverade lintning, etc
- Raderade lokalt repo, byggde om från fjärr
- Uppdaterad TypeScript (NPM), Node osv.
En sak jag märker, i tsconfig, om jag definierar en tom include: [], får jag prestandan tillbaka, men naturligtvis kan den inte hitta typerna i node_modules så det kommer inte att fungera. Några förslag?
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"strictPropertyInitialization": false,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src" // if I leave this empty, all the performance returns, but no package resoltion
],
"exclude": [
"node_modules"
]
}
package.json
{
"name": "omitted",
"version": "0.1.0",
"private": true,
"dependencies": {
"@babel/eslint-parser": "^7.21.8",
"@reduxjs/toolkit": "^1.9.2",
"@types/lodash": "^4.14.191",
"@types/react": "^18.0.27",
"agentkeepalive": "^4.2.0",
"antd": "^5.4.6",
"axios": "^0.26.0",
"dayjs": "^1.10.7",
"http-proxy-middleware": "^0.19.1",
"lodash": "^4.17.21",
"query-string": "^7.1.1",
"react": "^18.2.0",
"react-device-detect": "^2.1.2",
"react-dom": "^18.2.0",
"react-input-mask": "^2.0.4",
"react-quill": "^2.0.0",
"react-redux": "^8.0.5",
"react-router-dom": "^6.8.0",
"react-scripts": "^5.0.1",
"recharts": "^2.1.14",
"redux": "^4.2.1",
"rimraf": "^2.6.2",
"swagger-ui-react": "^4.15.5",
"web-vitals": "^0.2.4",
"workbox-background-sync": "^5.1.3",
"workbox-broadcast-update": "^5.1.3",
"workbox-cacheable-response": "^5.1.3",
"workbox-core": "^5.1.3",
"workbox-expiration": "^5.1.3",
"workbox-google-analytics": "^5.1.3",
"workbox-navigation-preload": "^5.1.3",
"workbox-precaching": "^5.1.3",
"workbox-range-requests": "^5.1.3",
"workbox-routing": "^5.1.3",
"workbox-strategies": "^5.1.3",
"workbox-streams": "^5.1.3"
},
"devDependencies": {
"@types/node": "^20.1.7",
"@types/react-redux": "^7.1.25",
"@types/react-router-dom": "^5.3.3",
"ajv": "^6.9.1",
"cross-env": "^7.0.3",
"eslint": "^7.25.0",
"eslint-config-react-app": "^6.0.0",
"eslint-plugin-flowtype": "^5.7.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-react": "^7.23.2",
"nan": "^2.14.2",
"typescript": "^5.0.4"
},
"scripts": {
"prestart": "node aspnetcore-https && node aspnetcore-react",
"start": "rimraf ./build && react-scripts start",
"build": "react-scripts build",
"test": "cross-env CI=true react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"lint": "eslint ./src/"
},
"eslintConfig": {
"extends": [
"react-app"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Svar #1
För alla som kan ha detta problem längre fram. Inget jag skulle ändra, konfigurera eller installera om hjälpte. Istället byggde jag om OS-avbildningen och installerade allt från början. Fungerar som det alltid har gjort. Så, ingen riktig lösning, men ibland kan det räcka med att börja om om det alternativet är tillgängligt för dig.