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

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

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

enter image description here

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

enter image description here

Ответы (9)

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

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

Перезапустить Visual Studio

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

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

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

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

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

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

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

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

Я оставил отзыв по этому поводу:

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 есть командная строка: enter image description here

Фактически мне сказали:

В VS 2017 некоторые функции реализованы на JavaScript. Node.js используется Visual Studio для запуска этого JavaScript. Среди прочего, Node используется для запуска кода, который предоставляет службы форматирования и intellisense, когда пользователь редактирует TypeScript или JavaScript. Это изменение по сравнению с VS 2015.

Это отвечает на мой вопрос, но проливает свет на другой - зачем вам 1,4 ГБ памяти, чтобы предоставить мне intellisense для файлов JavaScript ... или это одно из решений, встроенных в VS, поэтому оно использует меньше памяти чтобы он не превышал лимит в 2 ГБ (4 ГБ) 32-разрядных процессов? Вопросы вопросы вопросы.

Просто отмечу, что потребление высокой памяти было исправлено в выпуске 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

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

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

disable builtin ts/js language service extension

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

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

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

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

Самый грязный обходной путь: просто переименуйте ServiceHub.Host.Node.x86.exe во что-нибудь другое. С тех пор меня не беспокоит. Когда (если) он вам действительно понадобится, просто переименуйте его обратно.

Тот же трюк работает в Adobe Photoshop, который также запускает Node по какой-то причине, которую я еще не обнаружил в моем обычном рабочем процессе.


Получается ...

Вы не можете просто переименовать его и ожидать, что все будет работать. Кто знал!

Очевидно, этот трюк с переименованием работает только в том случае, если вы приостанавливаете процесс VS и убиваете Node, а затем возобновляете VS. Если вы попытаетесь запустить VS с переименованным файлом Node exe, он выйдет из строя при открытии проекта с «неизвестной аппаратной ошибкой». Кроме того, при работе с уже загруженным проектом счетчик ленивых ссылок над методами и свойствами не будет работать, потому что, очевидно, это зависит от того, каким-то образом там находится Node.

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

Ответ Райана Тернье указал мне на то, что я считаю правильным. После его ссылки (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, жизнь снова наладилась.

2022 WebDevInsider