Visual Studio 2017 - Node.JS Серверный процесс - выключить?


132

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

В моем приложении нет библиотек Node.JS. Я не могу понять, как отключить этот процесс Javascript на стороне сервера Node.JS: Это съедает слишком много памяти для того, что мне не нужно.

Есть ли способ убить это, кроме удаления VS 2017 и переключения обратно на VS 2015?

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

Убийство основного процесса в диспетчере задач ни на что не влияет в VS, однако, если я перейду на вкладку «Подробности» и убью отдельные запущенные процессы, это приведет к сбою Visual Studio. Я снял видео того, что произошло после того, как я убил процесс и запустил свою локальную веб-страницу (извините за качество, ТАК ограниченный размер изображения до 2 МБ):

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


1
Вы используете TypeScript?
SLaks

Мы используем его небольшое количество.
Райан Тернье

Я закончил этот процесс и не заметил никаких побочных эффектов. Веб-компилятор компилирует LESS файлы без него.
Glen Little

@GlenLittle Это работает, но, как кот ... оно вернулось. Мне интересно, установлено ли что-то в начале и всегда ли работает. Я только что установил VS2017 на свой диск, и это дало мне возможность установить сервер. Я
Райан Тернье

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

Ответы:


183

Инструменты> Параметры> Текстовый редактор> JavaScript / TypeScript> Языковая служба ...

Снимите флажок «Включить новую языковую службу JavaScript».

Похоже, это препятствует запуску процесса NodeJS.


19
Это решение помогло, за него следует проголосовать. Но вам нужно перезапустить Visual Studio, чтобы это вступило в силу.
madd

14
Я сделал это, перезагрузил VS2017, и это все еще не помешало запуску "Node.js: Server-side JavaScript" при запуске VS2017. Он занимает около 800 МБ на моей машине, и я больше не могу отлаживать в Chrome.
Bill

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

1
Какого черта? Почему это делается в настройках текстового редактора? : P
Sнаđошƒаӽ

3
Это даже не вариант для меня в моем меню
Брэдлэйни

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 используется для запуска кода, который предоставляет службы форматирования и intellisense, когда пользователь редактирует TypeScript или JavaScript. Это изменение по сравнению с VS 2015.

Он отвечает на мой вопрос, но проливает свет на другой - зачем вам 1,4 ГБ памяти, чтобы дать мне intellisense для файлов 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 RAM и SSD с Win10 Pro. Shocking.
Невилл

согласно сообщению, указанному здесь ... Отключение расширения TypeScript на данный момент - это обходной путь, по крайней мере, для меня. Щелкните «Инструменты», «Расширения и обновления», найдите «TypeScript» и отключите его. Перезапустите Visual Studio.
Пэт Капоцци 01

Что ж, это объясняет, почему Intellisense пошла к черту.
Энди

19

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

Инструменты> Расширения и обновления> TypeScript для Microsoft Visual Studio> Отключить

После этого просто перезапустите Visual Studio, и все готово.


1
все еще работает после того, как я выполнил эти шаги
Джерви Витриоло

1
Все еще работает. Это ничего не сделало.
BradLaney 01

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 с переименованным файлом Node exe, он выйдет из строя при открытии проекта с «неизвестной аппаратной ошибкой». Кроме того, при работе с уже загруженным проектом счетчик ленивых ссылок над методами и свойствами не будет работать, потому что, очевидно, это зависит от присутствия Node.

Так что было бы нормально просто приостановить процесс Node и позволить подкачке Windows выгружать свою память из оперативной памяти на жесткий диск, не переименовывая exe, чтобы вы могли снова запустить VS без проблем с переименованием. Если вы готовы жить с последствиями, конечно.


К сожалению, я думаю, что есть какой-то код, который обнаружит, что процесс узла не отвечает, и вместо этого запустит новый. Я не знаком с этой частью кода VS, но так мне ее описали.
Джимми

Мне всегда нравится идея насильственного лишения , вы понимаете, о чем я ... ;-)
Sнаđошƒаӽ

3

Что-то, что может помочь проектам снизить вес nodejs: переназначить версию узла, используемую в меню Инструменты> Параметры> Проекты и решения> Управление веб-пакетами , установленной 64-битной версии. Studio по-прежнему будет запускать свой внутренний узел для экземпляра tsserver.js, но любой машинописный текст в проекте по умолчанию будет использовать предоставленную версию - и это помогло мне из первых рук.

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

Наконец, убедитесь, что в параметрах Typescript в меню Инструменты> Параметры> Текстовый редактор> Javascript / Typescript> Проект не установлен флажок Автоматически компилировать файлы TypeScript, которые не являются частью проекта, поскольку это также может связывать ресурсы для вспомогательных сторонних проектов. используя узел или машинописный текст.

Они не являются надежными, каждый должен найти свое узкое место, но я обнаружил, что они чаще всего срабатывают для меня и моей команды.


Это сработало для меня. В начало этого списка добавлен «C: \ Program Files \ nodejs» (где я ранее вручную устанавливал NodeJS), и процесс Node.js перешел с 50-60% загрузки процессора до 0%.
andynil

1

Просто отмечу, что потребление большой памяти было исправлено в выпуске Visual Studio 2017 версии 15.2 (26430.04) от 10 мая 2017 г.

Примечания к выпуску здесь: 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/issues/1298. Я наблюдал эту проблему в VS 2015 в 2015 году с проектами JavaScript, но проблема становится еще хуже.
чудесный мир

все еще собирается 2 ГБ в 2017
Geomorillo

Не исправлено для меня. Все еще поглощает тонны памяти с версией 15.6.6
John81

0

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

Я наконец обнаружил это после того, как служба узлов кода VS разбила мой сервер около миллиона раз. Раздражает, что об этом так сложно найти документацию.

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


0

В моем случае бот хотел убить процесс node.js, и я сделал следующее, чтобы снизить потребление ЦП процессами Node.Js, которые выполняются в Visual Studio 2019:

  • Я удалил папку «Program Files (x86) / MicrosoftSDK / TypeScript.
  • я бегу npm rebuild fsevents
  • Я отключил в браузере Chrome: Настройки-Система-Продолжить запуск фоновых приложений ...

Мне кажется, сейчас намного лучше. Но, к сожалению, не на 100%.

Надеюсь, это тоже поможет кому-то там. Удачи, ребята! :-)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.