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

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

Мое приложение не содержит никаких библиотек Node.JS. Я не могу понять, как отключить этот процесс javascript с Node.JS: Server. У него слишком много памяти для чего-то, что мне не нужно.

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

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

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

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

Ответ 1

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

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

Это означает, что процесс NodeJS не запускается.

Ответ 2

Я поднял отзыв по этому вопросу:

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, поэтому использует Less Memory поэтому он не попадает в предел 32 ГБ (4 ГБ) 32-битных процессов? Вопросы вопросы вопросы.

Ответ 3

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

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

После этого просто перезапустите Visual Studio, и вы хорошо пойдете.

Ответ 4

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

Ответ 5

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

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


Выключается...

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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