Penyelesaian Masalah Node.js
Dokumen ini bertujuan membantu pembangun yang menggunakan persekitaran pembangunan tempatan ServBay dalam menyelesaikan masalah biasa berkaitan pakej Node.js.
Versi arahan Node.js/npm/pnpm/yarn tidak dijumpai atau tidak ditemui
Apabila anda menggunakan Node.js, npm, pnpm, atau yarn melalui ServBay, sekiranya kod ralat berikut dipaparkan, ini bermakna sistem tidak dapat menjumpai fail pelaksana Node.js versi tertentu yang anda cuba gunakan:
bash
Warning: Specified Node.js version '22' for 'node' not found.
If this is not your intention, please delete the 'NODE_VERSION' configuration
from the '.servbay.config' file in the current directory.
1
2
3
2
3
Masalah ini biasanya berlaku kerana versi Node.js yang anda pilih belum dipasang lagi dalam ServBay, atau anda ingin menggunakan Node.js yang dipasang melalui alat lain seperti nvm
atau homebrew
, namun disebabkan isu konfigurasi persekitaran sistem, ServBay tidak dapat mengenal pasti lokasi Node.js tersebut.
Petunjuk
Selepas pemasangan ServBay, sistem akan mengkonfigurasi script alias (nama samaran skrip) supaya pakej Node.js yang dipasang oleh ServBay diutamakan. Jika versi yang dikehendaki tidak dijumpai dalam ServBay, sistem akan cuba mengesan versi lalai yang dipasang oleh nvm
, dan seterusnya versi melalui homebrew
. Jika tiada satu pun dijumpai, ralat di atas akan dilaporkan.
Analisis punca:
- Versi Node.js yang diinginkan belum dipasang melalui aplikasi ServBay.
- Sistem memiliki
nvm
atauhomebrew
dan anda ingin menggunakan Node.js melalui pengurusan alat tersebut, namun konfigurasi persekitaran shell (khususnya pembolehubah persekitaranPATH
atauNVM_BIN
) tidak betul, menyebabkan mekanisme fallback ServBay gagal mengesan pemasangan Node.js luar.
Penyelesaian:
Jika anda menggunakan nvm
dan telah memasang versi Node.js dengannya namun masih menghadapi masalah ini, punca lazimnya ialah kekurangan atau kesilapan konfigurasi bagi pembolehubah persekitaran NVM_BIN
dalam fail konfigurasi shell anda. nvm
lazimnya akan menetapkan pembolehubah ini secara automatik semasa pemasangan, yang menunjuk ke lokasi fail pelaksana Node.js yang dipasang oleh nvm
. Pembolehubah ini penting agar nvm
berfungsi dengan betul.
Anda hanya perlu menyemak dan membaiki tetapan berkaitan nvm
dalam fail konfigurasi shell anda (seperti ~/.zshrc
, ~/.bash_profile
dan sebagainya) supaya pembolehubah NVM_BIN
ditetapkan dan dieksport dengan betul. Selepas itu, muat semula fail konfigurasi tersebut (contohnya melalui source ~/.zshrc
atau but semula terminal). Selepas pembetulan, ServBay seharusnya boleh menggunakan mekanisme fallback untuk mengenal pasti Node.js yang diuruskan oleh nvm
.
Jika anda tidak menggunakan nvm
atau homebrew
, atau ingin mengurus Node.js melalui aplikasi ServBay, pastikan versi Node.js yang anda ingin gunakan sudah dipasang melalui antaramuka “Pakej” aplikasi ServBay.
Ralat tidak sokong senibina semasa menggunakan pakej npm seperti node-sass
Bagi pengguna macOS dengan cip Apple Silicon (M1/M2/M3/M4 – seni bina Arm64), anda mungkin menghadapi ralat seperti Unsupported architecture (arm64)
ketika menggunakan pakej npm lama atau yang bergantung pada modul native (contoh: node-sass
). Ini terjadi kerana pakej-pakej lama tersebut mungkin hanya menyediakan fail binari atau konfigurasi yang menyokong senibina x86_64 sahaja.
bash
ERROR: Module Error (from ./node_modules/sass-loader/dist/cjs.js):
Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Node.js 14.x
For more information on which environments are supported
please see:
https://github.com/sass/node-sass/releases/tag/v4.14.1
1
2
3
4
5
2
3
4
5
Analisis punca:
Beberapa pakej npm menggunakan kod asli C++ atau lain-lain yang perlu dikompilasi khas untuk senibina CPU tertentu. Versi lama tidak menyediakan sokongan atau binaan untuk Arm64 (Apple Silicon).
Penyelesaian:
Gantikan dengan alternatif moden yang menyokong Arm64 (disyorkan):
Penyelesaian terbaik adalah menggantikan pakej lama dengan versi alternatif yang moden dan menyokong Arm64 sepenuhnya. Sebagai contoh, gantikan
node-sass
—yang kini jarang diselenggara—dengansass
yang lebih moden dan aktif. Kebanyakan projek dan toolchain moden sudah beralih kesass
.bashnpm uninstall node-sass npm install --save-dev sass
1
2Pasang Node.js versi x86_64 melalui ServBay dan jalankan dengan Rosetta 2 (tidak digalakkan):
ServBay membenarkan pemasangan pakej Node.js untuk senibina
x86_64
. Jika anda menggunakan Mac berasaskan Apple Silicon, ini bermakna Node.js dan modul native x86_64 boleh berjalan di bawah lapisan penterjemahan Rosetta 2 yang disediakan oleh macOS. Anda boleh memilih versix86_64
di antaramuka “Pakej” ServBay.Perhatian: Penyelesaian ini tidak disarankan untuk penggunaan jangka panjang kerana ia bergantung pada emulasi oleh Rosetta 2. Ini boleh menyebabkan penurunan prestasi dan potensi masalah keserasian berbanding persekitaran asli Arm64. Sentiasa beri keutamaan pada solusi pertama.