Visual Studio 2017 - Proses Server Node.JS - Matikan?

132

Saya sedang mengerjakan Aplikasi ASP.NET di Visual Studio 2017 dan saya memperhatikan Node.JS: Proses Javascript sisi-server berjalan pada memori 1.3GB hingga 1.8GB. Proses pekerja IIS saya adalah ukuran normal pada VS 2015.

Aplikasi saya tidak termasuk perpustakaan Node.JS. Saya tidak dapat menemukan cara untuk mematikan Node.JS ini: Proses Javascript sisi-server mati. Itu memakan terlalu banyak memori untuk sesuatu yang tidak saya gunakan.

Apakah ada cara untuk mematikan ini selain mencopot pemasangan VS 2017 dan beralih kembali ke VS 2015?

masukkan deskripsi gambar di sini

Membunuh proses utama di Task Manager tidak mempengaruhi apa pun di VS, namun jika saya pergi ke tab Details dan membunuh proses yang berjalan individu itu crash Visual Studio. Saya mengambil video tentang apa yang terjadi setelah saya mematikan proses dan menjalankan halaman web lokal saya (Maaf untuk kualitas, SO ukuran gambar terbatas hingga 2MB):

masukkan deskripsi gambar di sini

Ryan Ternier
sumber
1
Apakah Anda menggunakan TypeScript?
SLaks
Kami menggunakan sejumlah kecil.
Ryan Ternier
Saya telah mengakhiri proses itu dan belum melihat adanya efek buruk. Web-compiler mengkompilasi file KURANG tanpa itu.
Glen Little
@ GllenLittle Itu berhasil, tapi seperti kucing ... itu kembali. Saya bertanya-tanya apakah itu sesuatu yang diinstal di awal dan selalu berjalan. Saya baru saja menginstal VS2017 pada lappy saya dan itu memberi saya opsi untuk menginstal server. Saya akan memperbarui ini ketika saya mengujinya
Ryan Ternier
Bisakah Anda mengajukan item umpan balik tentang ini? Ada beberapa fitur berbeda di alat pengembang web yang menggunakan Node di bawah tenda (seperti JSLint / CSSLint / etc) yang mungkin terlibat di sini. Ini akan muncul untuk proyek web apa pun, bukan hanya TypeScript atau Node.
Jimmy

Jawaban:

183

Alat> Opsi> Editor Teks> JavaScript / TypeScript> Layanan Bahasa ...

Hapus centang 'Aktifkan layanan bahasa JavaScript baru'.

Ini muncul untuk mencegah proses NodeJS dari mulai.

Andy Taw
sumber
19
Solusi ini membantu, harus ditingkatkan. Tetapi Anda perlu me-restart studio visual agar ini berlaku.
madd
14
Saya melakukan ini, reboot VS2017 dan itu masih tidak mencegah "Node.js: Server-side JavaScript" dari mulai ketika saya memulai VS2017. Memonopoli sekitar 800MB di mesin saya dan saya tidak bisa lagi debug di Chrome.
Bill
1
Masalah yang sama di sini @ Bill - menonaktifkan ekstensi TypeScript sesuai jawaban Gabriel tampaknya telah mengurutkannya.
Dunc
1
Apa apaan? Mengapa itu dilakukan dalam pengaturan Editor Teks? : P
Sнаđошƒаӽ
3
Ini bahkan bukan pilihan bagi saya dalam menu saya
BradLaney
29

Saya meningkatkan umpan balik tentang masalah ini:

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

Saya mendapat tanggapan balik dari Tim MS - dia mengarahkan saya ke pos ini:

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

Proses node.exe memiliki baris perintah: masukkan deskripsi gambar di sini

Secara efektif saya diberitahu:

Di VS 2017, beberapa fitur diimplementasikan dalam JavaScript. Node.js digunakan oleh Visual Studio untuk menjalankan JavaScript itu. Antara lain, Node digunakan untuk menjalankan kode yang menyediakan layanan pemformatan dan intellisense ketika pengguna mengedit TypeScript atau JavaScript. Ini adalah perubahan dari VS 2015.

Ini menjawab pertanyaan saya, tetapi menjelaskan yang lain - mengapa Anda membutuhkan memori 1,4GB untuk memberi saya intellisense pada file JavaScript ... atau apakah ini salah satu solusi yang telah dibangun ke dalam VS sehingga ia menggunakan Lebih Sedikit Memori sehingga tidak dapat mencapai batas 2GB (4GB) dari proses 32-bit? Pertanyaan pertanyaan pertanyaan.

Ryan Ternier
sumber
Memang hal itu untuk membuat proses VS utama lebih responsif dan mengoptimalkan kinerja dengan memasukkan hal-hal tertentu seperti Intellisense ke dalam proses lain, dan dengan lebih banyak ram untuk setiap proses 32-bit. Tapi itu tidak masalah bagi kami dalam hal ini. Apa yang saya temukan adalah Node mengkonsumsi lebih banyak memori jika Anda memiliki lebih banyak file kode sumber terbuka dan Intellisense diaktifkan. Jika Anda benar-benar kehabisan memori, coba nonaktifkan Intellisense dan fitur lain yang dapat Anda lakukan tanpa.
user1306322
2
Ini memiliki efek sebaliknya bagi saya dan telah membuat VS2017 sangat malas (pun intended) sehingga saya akan kembali ke VS2015. Saya merasa konyol bahwa MS harus menggunakan kerangka eksternal pihak ke-3 untuk melakukan sesuatu yang sederhana seperti Intellisense. Itu selalu menjadi salah satu kekuatan mereka ... dan sekarang? Saya telah menonaktifkan TypeScript dan Node.js dan jika saya hanya melihat Chrome VS2017 hang begitu buruk saya kadang-kadang harus reboot. Jadi kembali ke Firefox dan VS2015 untuk saya, setidaknya untuk saat ini. Dan ini pada i7, 16GM RAM dan semua pengaturan SSD dengan Win10 Pro. Mengejutkan.
Neville
menurut posting yang dirujuk di sini ... Menonaktifkan ekstensi TypeScript adalah pekerjaan untuk saat ini, setidaknya untuk saya. Klik Alat, Ekstensi dan Pembaruan, cari "TypeScript" dan nonaktifkan. Mulai ulang Visual Studio.
pat capozzi
Nah, itu menjelaskan mengapa Intellisense telah masuk neraka.
Andy
19

Anda harus menonaktifkan dukungan TypeScript di Visual Studio:

Alat> Ekstensi dan Pembaruan> TypeScript untuk Microsoft Visual Studio> Nonaktifkan

Setelah itu, cukup restart Visual Studio, dan Anda siap melakukannya.

Gabriel
sumber
1
masih berjalan setelah saya mengikuti langkah ini
Jervie Vitriolo
1
Masih berjalan. Ini tidak melakukan apa pun.
BradLaney
16

Jawaban Ryan Ternier menunjuk saya pada apa yang saya yakini sebagai arah yang benar. Mengikuti tautannya ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) membawa saya ke jawaban Bowden Kelly , tepat di bawah jawaban yang diterima.

Inilah jawaban Bowden Kelly:

Proses simpul yang Anda lihat adalah menyalakan layanan bahasa JavaScript. Anda akan melihat proses ini muncul kapan saja Anda mengedit file JS, file TS, atau file apa pun dengan JS / TS di dalamnya (html, cshtml, dll). Proses ini adalah kekuatan IntelliSense, navigasi kode, pemformatan, dan fitur pengeditan lainnya dan melakukan ini dengan menganalisis seluruh konteks proyek Anda. Jika Anda memiliki banyak file .js di proyek Anda, ini bisa menjadi besar, tetapi kemungkinan besar masalahnya adalah Anda memiliki banyak file perpustakaan yang sedang dianalisis. Secara default, kami akan memindai setiap file .js / .ts di proyek Anda. Tetapi Anda dapat mengesampingkan perilaku ini dan menyetel layanan bahasa untuk hanya fokus pada kode Anda. Untuk melakukan ini, buat tsconfig.json di root proyek Anda dengan pengaturan berikut:

    {
    "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
        ]
    }
}

Setelah saya menambahkan folder dengan semua pustaka skrip saya ke file tsconfig.json, hidup menjadi baik kembali.

Muntah
sumber
Setelah kotak sabun saya mengomel di jawaban sebelumnya, ini sepertinya menyelamatkan hari !!! Suatu hal yang sederhana namun begitu tidak jelas dan hanya butuh saya tiga hari berjuang dengan VS2017 untuk akhirnya menemukan ini!
Neville
Menambahkan file ini mengarah ke semua jenis kesalahan TypeScript ketika saya membangun proyek. Dihapus dan kesalahan hilang.
John81
4

Solusi paling kotor yang pernah ada: ubah nama ServiceHub.Host.Node.x86.exemenjadi sesuatu yang lain. Sejak itu tidak mengganggu saya. Ketika (jika) Anda benar-benar membutuhkannya, cukup ganti namanya kembali.

Trik yang sama berfungsi di Adobe Photoshop yang juga menjalankan Node untuk beberapa alasan yang belum saya temukan dalam alur kerja yang biasa.


Ternyata...

Anda tidak bisa hanya mengubah nama dan mengharapkan hal-hal tetap bekerja. Siapa yang tahu!

Tampaknya trik penggantian nama ini hanya berfungsi jika Anda menangguhkan proses VS dan membunuh Node, lalu lanjutkan VS. Jika Anda mencoba meluncurkan VS dengan nama file Node exe, itu akan macet ketika membuka proyek dengan "kesalahan keras yang tidak dikenal". Juga, saat mengerjakan proyek yang sudah dimuat, penghitung referensi malas di atas metode dan properti tidak akan bekerja karena tampaknya yang bergantung pada Node ada di sana entah bagaimana.

Jadi mungkin tidak apa-apa untuk hanya menunda proses Node dan membiarkan Windows paging menukar memorinya dari ram ke hard drive, tanpa mengubah nama exe sehingga Anda bisa memulai VS lagi nanti tanpa melalui kerumitan penggantian nama. Jika Anda mau hidup dengan konsekuensinya, itulah.

pengguna1306322
sumber
Sayangnya, saya pikir ada beberapa kode yang akan mendeteksi jika proses simpul tidak responsif dan meluncurkan yang baru sebagai gantinya. Saya tidak terbiasa dengan bagian dari kode VS, tapi begitulah dijelaskan kepada saya.
Jimmy
Saya selalu menyukai gagasan merampas dengan paksa , Anda tahu apa yang saya maksud ... ;-)
Sнаđошƒаӽ
3

Sesuatu yang dapat membantu proyek mengurangi bobot simpul: adalah untuk menetapkan kembali versi simpul yang digunakan di bawah Alat> Opsi> Proyek dan Solusi> Manajemen Paket Web ke versi 64bit yang diinstal. Studio masih akan meluncurkan Node internal untuk contoh tsserver.js, tetapi semua naskah dalam proyek akan default ke versi yang disediakan - dan ini membantu saya secara langsung.

Juga, lain kali saya menemukan layanan bahasa sedang berjalan, saya menemukan menggunakan sederhana di tsconfig.jsonatas direktori yang digunakan sebagai repositori, dan menentukan untuk skipLibCheck: true, dan menambahkan node_modules untuk dikecualikan - sangat membantu sepanjang layanan, dan satu file melakukan semua folder di bawah itu, terlepas dari referensi proyek langsung. PS - jika Anda masih menginginkan dukungan Intellisense JavaScript, pastikan untuk mengatur opsi allowJs: truedan noEmit: true.

Terakhir, verifikasi di dalam opsi skriptrip di bawah alat> opsi> Editor teks> Javascript / skrip skrip> proyek bahwa itu tidak diperiksa untuk secara otomatis mengkompilasi file skrip yang bukan bagian dari proyek karena itu juga dapat mengikat sumber daya untuk proyek pihak ketiga tambahan menggunakan node atau naskah.

Ini bukan bukti bodoh, masing-masing harus menemukan hambatan yang tepat, tetapi saya telah menemukan ini telah bekerja untuk saya dan tim saya lebih sering daripada tidak

Nathan Teague
sumber
Ini berhasil untuk saya. Ditambahkan 'C: \ Program Files \ nodejs' (di mana saya sebelumnya menginstal NodeJS secara manual), ke bagian atas daftar ini, dan proses Node.js berubah dari 50-60% beban CPU menjadi 0%.
andynil
1

Hanya mencatat bahwa konsumsi memori tinggi telah diperbaiki dalam rilis 10 Mei 2017 - Visual Studio 2017 versi 15.2 (26430.04).

Catatan Rilis Di Sini: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Catatan khusus tentang perbaikan di sini: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html

zulumojo
sumber
2
Menjalankan 15.2 (26.430.16) di sini dan saya akan mengatakan bahwa mungkin mereka memperbaiki masalah konsumsi memori tinggi yang konyol tetapi hanya mengaturnya untuk menurunkannya ke konsumsi memori tinggi :)
PJUK
1
Sepakat. Masalahnya sebagian besar disebabkan oleh seberapa buruk node.js ditulis di tempat pertama (dalam fungsi "objek" yang direplikasi berulang-ulang) - sekali lagi, kerangka kerja untuk menambal kekurangan JS akan selalu membuat segalanya lebih lambat. Inilah yang terjadi ketika Anda memiliki orang-orang Linux berkembang untuk Windows - kekacauan berbelit-belit besar.
MC9000
Saya melaporkan masalah ini di github.com/aspnet/JavaScriptServices/issues/1298 Saya mengamati masalah ini dengan VS 2015 pada 2015 dengan proyek JavaScript, tetapi masalahnya menjadi lebih buruk.
dunia yang indah
stil going 2 gb on 2017
Geomorillo
Tidak diperbaiki untuk saya. Masih memakan banyak memori dengan versi 15.6.6
John81
0

Untuk menonaktifkan Layanan Bahasa dalam Kode VS, buka ekstensi, lalu filter pada ekstensi bawaan dan nonaktifkan layanan bahasa TypeScript / Javascript.

Saya akhirnya menemukan ini setelah layanan simpul kode VS crash server saya sekitar satu juta kali. Mengganggu bahwa ini sangat sulit untuk menemukan dokumentasi tentang.

nonaktifkan ekstensi layanan bahasa bawaan

Ben Olayinka
sumber
0

Dalam kasus saya, saya tidak ingin membunuh proses node.js dan saya melakukan hal-hal berikut untuk menurunkan konsumsi CPU dan proses Node.Js yang berjalan di bawah Visual Studio 2019:

  • Saya menghapus folder "Program Files (x86) / MicrosoftSDK / TypeScript
  • saya berlari npm rebuild fsevents
  • Saya mematikan di browser Chrome: Pengaturan-Sistem-Lanjutkan menjalankan aplikasi latar belakang ...

Menurut saya, ini jauh lebih baik sekarang. Tapi tidak 100% disayangkan.

Semoga ini bisa membantu seseorang di luar sana juga. Semoga beruntung kawan! :-)

Honza P.
sumber