Visual Studio 2017 - Серверний процес Node.JS - вимкнути?


132

Я працюю над програмою ASP.NET у Visual Studio 2017 і зауважую Node.JS: Процес Javascript на стороні сервера, який працює від 1,3 ГБ до 1,8 ГБ пам'яті. Мій робочий процес IIS - це нормальний розмір, він є у VS 2015.

У моєму додатку немає бібліотек Node.JS. Я не в змозі зрозуміти, як відключити цей Node.JS: Процес Javascript на стороні сервера. Це з'їдає занадто багато пам’яті на те, для чого я не маю користі.

Чи є спосіб усунути це, окрім видалення VS 2017 та повернення до VS 2015?

введіть тут опис зображення

Вбивство основного процесу в диспетчері завдань нічого не впливає на VS, однак, якщо я перейду на вкладку "Деталі" і вбиваю окремі запущені процеси, він виходить з ладу Visual Studio. Я зняв відео, що сталося після того, як я вбив процес, і запустив свою локальну веб-сторінку (Вибачте за якість, ТАК обмежений розмір зображення до 2 Мб):

введіть тут опис зображення


1
Ви використовуєте TypeScript?
СЛАкс

Ми використовуємо невелику кількість.
Райан Терньє

Я закінчив цей процес і не бачив жодних негативних наслідків. Веб-компілятор збирає менше файлів без нього.
Глен Малий

@GlenLittle Це працює, але, як кіт ... він повернувся. Мені цікаво, чи це щось встановлено на початку і завжди працює. Щойно я встановив VS2017 на свій лаптоп, і це дало мені можливість встановити сервер. Я
оновлю

Чи можете ви подати відгук про це? У інструментах веб-розробників є кілька різних функцій, які використовують Вузол під кришкою (наприклад, JSLint / CSSLint / тощо), які тут можуть бути залучені. Вони відображатимуться для будь-якого веб-проекту, а не лише для TypeScript або Node.
Джиммі

Відповіді:


183

Інструменти> Параметри> Текстовий редактор> JavaScript / TypeScript> Мовна служба ...

Зніміть прапорець "Увімкнути нову службу мови JavaScript".

Це, як видається, не дозволяє запустити процес NodeJS.


19
Це рішення допомогло, слід підтримувати. Але вам потрібно перезапустити візуальну студію, щоб це вступило в силу.
madd

14
Я зробив це, перезавантажив VS2017, він все ще не заважав "Node.js: JavaScript на сервері" запускатися, коли я запускав VS2017. На моїй машині прокручується близько 800 Мб, і я більше не можу налагоджувати в Chrome.
Білл

1
Ту ж проблему тут @Bill - відключення розширення TypeScript відповідно до відповіді Габріеля, здається, хоч і сортувало його.
Данк

1
Якого біса? Чому це робиться в налаштуваннях текстового редактора? : P
Snađошƒаӽ

3
Це навіть не варіант для мене у своїх меню
BradLaney

29

Я підняв відгуки з цього питання:

https://developercommunity.visualstudio.com/content/problem/31406/visual-studio-2017-nodejs-server-process-turn-off.html

Я отримав відповідь від команди MS - він направив мене на цю посаду:

https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629

Процес node.exe містить командний рядок: введіть тут опис зображення

Ефективно мені сказали:

У VS 2017 в JavaScript реалізовано кілька функцій. Node.js використовується Visual Studio для запуску цього JavaScript. Крім усього іншого, Node використовується для запуску коду, який надає послуги форматування та інтелігенції, коли користувач редагує TypeScript або JavaScript. Це зміна від VS 2015.

Він відповідає на моє запитання, але з'ясовує інше - навіщо вам потрібно 1,4 Гб оперативної пам'яті, щоб дати мені інтелігенцію на файли JavaScript ... або це одне з рішень, вбудованих у VS, щоб він використовував менше пам'яті, щоб не було Ви не досягли межі 2 Гб (4 ГБ) 32-бітних процесів? Запитання, запитання.


Дійсно, зробити головний VS-процес більш чуйним та оптимізувати продуктивність, розміщуючи певні речі, такі як Intellisense, в іншому процесі та з більшим обсягом оперативної пам’яті для кожного 32-бітного процесу. Але це для нас не має значення. Я знайшов, що Node споживає більше пам’яті, якщо у вас відкрито більше файлів вихідного коду та включений Intellisense. Якщо вам не вистачає пам’яті, експериментуйте з відключенням Intellisense та інших функцій, без яких можна обійтися.
user1306322

2
Це зробило зворотний ефект для мене і зробило VS2017 настільки ледачим (каламбур призначений), що я повертаюся до VS2015. Я вважаю недоцільним, що MS повинні використовувати сторонні зовнішні рамки, щоб зробити щось таке просто, як Intellisense. Це завжди було їхньою сильною стороною ... а тепер? У мене вимкнено TypeScript і Node.js, і якщо я просто дивлюся, що Chrome VS2017 висить так погано, мені іноді доводиться перезавантажуватись. Тож назад до Firefox та VS2015 для мене, принаймні поки що. І це на i7, 16GM оперативної пам’яті та всіх налаштуваннях SSD з Win10 Pro. Шокуюча.
Невіл

Відповідно до публікації, на яку посилається тут ... Вимкнення розширення TypeScript на даний момент є проблемою, принаймні для мене. Клацніть Інструменти, розширення та оновлення, знайдіть "TypeScript" та відключіть його. Перезапустіть Visual Studio.
pat capozzi

Ну, це пояснює, чому Intellisense пішов у пекло.
Енді

19

Вам потрібно відключити підтримку TypeScript у Visual Studio:

Інструменти> Розширення та оновлення> TypeScript для Microsoft Visual Studio> Вимкнути

Після цього просто перезапустіть Visual Studio, і ви добре підете.


1
все ще працює після того, як я виконував ці кроки
Джерві Вітріоло

1
Досі працює. Це нічого не зробило.
BradLaney

16

Відповідь Райана Терньє вказала мені на правильний напрямок. Перейшовши за його посиланням ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ), я привів мене до відповіді Боудена Келлі , прямо під прийнятою відповіддю.

Ось відповідь Боудена Келлі:

Процес вузла, який ви бачите, працює на мовному сервісі JavaScript. Ви побачите, що цей процес з’явиться в будь-який час, коли ви редагуєте файл JS, файл TS або будь-який файл із JS / TS всередині (html, cshtml тощо). Цей процес - це функціонування IntelliSense, навігація по коду, форматування та інші функції редагування, і це робиться шляхом аналізу всього контексту вашого проекту. Якщо у вашому проекті є багато .js-файлів, це може отримати велику кількість, але, швидше за все, проблема полягає в тому, що у вас є багато бібліотечних файлів, які аналізуються. За замовчуванням ми скануємо кожен .js / .ts файл у вашому проекті. Але ви можете змінити таку поведінку і налаштувати мовну службу, щоб зосередитися лише на вашому коді. Для цього створіть tsconfig.json в корені проекту з такими параметрами:

    {
    "compilerOptions": {
        "allowJs": true,
        "noEmit": true
    },
    "exclude": [
        "wwwroot/lib" //ignore everything in the lib folder (bootstrap, jquery, etc)
        // add any other folders with library code here
    ],
    "typeAcquisition": { 
        "enable": true,
        "include": [
            "bootstrap",
            "jquery"  //list libraries you are using here
        ]
    }
}

Як тільки я додав папку з усіма своїми бібліотеками скриптів у файл tsconfig.json, життя знову було гарним.


Після того, як у попередній відповіді мінявся мій короб з милом, це, здається, врятувало день !!! Така проста річ, але настільки незрозуміла, і мені знадобилося лише три дні боротьби з VS2017, щоб нарешті знайти це!
Невіл

Додавання цього файлу призводить до появи всіх видів помилок TypeScript, коли я будував проект. Видалено його, і помилки усунулися.
John81

4

Найбрудніший спосіб вирішення будь-коли: просто перейменуйте його ServiceHub.Host.Node.x86.exeна щось інше. З того часу мене не турбує. Коли (якщо) вам це справді потрібно, просто перейменуйте його назад.

Цей же трюк працює в Adobe Photoshop, який також працює Node з якихось причин, яких я ще не виявив у своєму звичайному робочому процесі.


Виявляється...

Ви не можете просто перейменувати його і очікувати, що все продовжить працювати. Хто знав!

Мабуть, цей трюк перейменування працює лише в тому випадку, якщо ви призупинили процес VS та вбили Node, а потім відновите VS. Якщо ви спробуєте запустити VS з перейменованим файлом Ne exe, він вийде з ладу при відкритті проекту з "невідомою жорсткою помилкою". Крім того, під час роботи над уже завантаженим проектом лінивий лічильник посилань на вищезазначені методи та властивості не працюватиме, оскільки, мабуть, це покладається на те, що Node якось там знаходиться.

Тож може бути нормально просто призупинити процес вузла і дозволити підкачці Windows поміняти пам'ять з оперативної пам’яті на жорсткий диск, не перейменуючи exe, щоб ви могли запустити VS знову пізніше, не проходячи проблем із перейменуванням. Якщо ви готові жити з наслідками, тобто.


На жаль, я думаю, що є якийсь код, який виявить, чи не відповідає процес вузла, і замість нього запустити новий. Я не знайомий з тією частиною коду VS, але саме так мені це було описано.
Джиммі

Мені завжди подобається ідея позбавити насильства , ти знаєш, що я маю на увазі ... ;-)
Snađошƒаӽ

3

Що може допомогти проектам зменшити вагу nodejs: це переназначити версію вузла, що використовується в меню Інструменти> Параметри> Проекти та рішення> Управління веб- пакетами на встановлену 64-бітну версію. Studio все одно запустить свій внутрішній вузол для екземпляра tsserver.js, але будь-який тип тексту в проекті буде за замовчуванням для наданої версії - і це допомогло мені з перших вуст.

Крім того, в інший раз, коли я виявив, що мовна служба працює внизу, я виявив, використовуючи простий tsconfig.jsonнад каталогами, що використовуються як сховища, і вказав skipLibCheck: true, і додав node_modules, щоб виключити - надзвичайно допомагав у сервісі, і один файл робить усі папки внизу це незалежно від прямих посилань на проект. PS - якщо ви все ще хочете підтримувати підтримку JavaScript intellisense, обов’язково встановіть параметр allowJs: trueі noEmit: true.

Нарешті, перевірте в параметрах Typescript в розділі Інструменти> Параметри> Текстовий редактор> Javascript / Typescript> Project , чи не встановлено прапорець Автоматично компілювати файли Typescript, які не є частиною проекту, оскільки це також може пов'язати ресурси для допоміжних сторонніх проектів. використовуючи вузол або машинопис.

Вони не дурні, кожен повинен знайти своє вузьке місце, але я виявив, що вони працювали для мене та моєї команди частіше, ніж ні


Це працювало для мене. До вершини цього списку додано "C: \ програмні файли \ nodejs" (де я раніше встановлював NodeJS вручну), і процес Node.js перейшов від 50-60% завантаження процесора до 0%.
andynil

1

Відзначимо, що споживання високої пам’яті було зафіксовано у випуску 10 травня 2017 року - випуск Visual Studio 2017 версії 15.2 (26430.04).

Примітки до випуску тут: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Конкретні зауваження щодо виправлення тут: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html


2
Запуск 15.2 (26430.16) тут, і я б сказав, що, можливо, вони вирішили смішно - питання споживання великої пам’яті, але лише керували тим, щоб знизити його до споживання великої пам’яті :)
PJUK

1
Домовились. Проблема здебільшого пов’язана з тим, як погано написаний node.js знаходиться в першу чергу (у тому, що функції "об'єкта" повторюються знову і знову) - тоді знову ж таки, рамки для виправлення недоліків JS завжди зроблять все повільніше. Це те, що відбувається, коли у вас розробляються люди для Linux для Windows - велика безладдя.
MC9000

Я повідомив про цю проблему на github.com/aspnet/JavaScriptServices/isissue/1298 Я спостерігав цю проблему з VS 2015 у 2015 році з проектами JavaScript, але проблема стає ще гіршою.
чудовий світ

2017 буде 2 гб
Geomorillo

Не зафіксовано для мене. Досі з’їдає тонни пам’яті з версією 15.6.6
John81,

0

Щоб вимкнути мовні служби у коді VS, перейдіть до розширень, потім відфільтруйте вбудовані розширення та відключіть мовну службу TypeScript / Javascript.

Нарешті я виявив це після того, як служба вузла VS-коду розбила мій сервер близько мільйона разів. Прикро, що про це було так важко знайти документацію.

відключити вбудоване розширення служби ts / js


0

У моєму випадку я бот хотів вбити процес node.js, і я зробив наступні дії, щоб знизити споживання процесора ov Node.Js процеси, які працюють під Visual Studio 2019:

  • Я видалив папку "Файли програм (x86) / MicrosoftSDK / TypeScript
  • я біжу npm rebuild fsevents
  • Я вимкнувся в браузері Chrome: Налаштування-Система-Продовжити запуску фонових програм ...

Зараз мені це здається набагато кращим. Але не на 100% нещасливо.

Сподіваюся, це теж допомагає комусь там. Успіхів, хлопці! :-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.