Ответ 1
Инструменты > Параметры > Текстовый редактоp > JavaScript/ TypeScript > Языковая служба...
Снимите флажок "Включить новую службу языка JavaScript".
Это означает, что процесс NodeJS не запускается.
Я работаю над 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 МБ):
Инструменты > Параметры > Текстовый редактоp > JavaScript/ TypeScript > Языковая служба...
Снимите флажок "Включить новую службу языка JavaScript".
Это означает, что процесс NodeJS не запускается.
Я поднял отзыв по этому вопросу:
Я получил ответ от команды MS - он направил меня на этот пост:
Процесс 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-битных процессов? Вопросы вопросы вопросы.
Вам нужно отключить поддержку TypeScript в Visual Studio:
Инструменты > Расширения и обновления > TypeScript для Microsoft Visual Studio > Отключить
После этого просто перезапустите Visual Studio, и вы хорошо пойдете.
Ответ Райана Тернье указал мне верное направление. Переход по его ссылке (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, жизнь снова стала хорошей.
Самое грязное обходное решение: просто переименуйте ServiceHub.Host.Node.x86.exe
в нечто другое. Меня это не беспокоило. Когда (если) вам действительно нужно, просто переименуйте его обратно.
Тот же трюк работает в Adobe Photoshop, который также запускает Node по какой-то причине, который я еще не обнаружил в своем обычном рабочем процессе.
Вы не можете просто переименовать его и ожидать продолжения работы. Кто знал!
По-видимому, этот трюк переименования работает только в том случае, если вы приостановили процесс VS и убили Node, а затем возобновили VS. Если вы попытаетесь запустить VS с переименованным exe файлом Node, он будет сбой при открытии проекта с "неизвестной жесткой ошибкой". Кроме того, работая над уже загруженным проектом, ленивый ссылочный счетчик над методами и свойствами не будет работать, потому что, по-видимому, он полагается на Node как-то там.
Таким образом, может быть просто приостановить процесс Node, и Windows-подкачка Windows заменит свою память на ram на жесткий диск, не переименовывая exe, чтобы позже вы могли запустить VS, не перебирая переименование. Если вы готовы жить с последствиями, то есть.
Что-то, что может помочь проектам смягчить вес узла: переназначить версию 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.
Это не безупречно, каждый должен найти свое точное узкое место, но я нашел, что они работали для меня и моей команды чаще, чем не
Просто отметив, что потребление высокой памяти было исправлено в версии от 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