Saya perlu menjalankan ng serve
setiap kali ada perubahan yang dilakukan pada file sumber. Saya tidak memiliki kesalahan di konsol.
Angular CLI: 1.6.2
Node: 8.9.1
OS: linux ia32
Angular: 5.1.2
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cdk: 5.0.2-c3d7cd9
@angular/cli: 1.6.2
@angular/material: 5.0.3-e20d8f0
@angular-devkit/build-optimizer: 0.0.36
@angular-devkit/core: 0.0.22
@angular-devkit/schematics: 0.0.42
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.2
@schematics/angular: 0.1.11
@schematics/schematics: 0.0.11
typescript: 2.4.2
webpack: 3.10.0
Jawaban:
Sering kali di Linux,
ng serve
ataung build --watch
tidak berfungsi jika direktori tidak memiliki izin yang memadai.Solusinya adalah memberikan izin yang diperlukan atau menggunakan
sudo
sebagai gantinya.MEMPERBARUI
flag watch in
ng serve
sebenarnya berlebihan karena ini adalah opsi default. Penghargaan untuk @Zaphoid karena menunjukkan kesalahannya.sumber
ng serve
dengansudo
izin. Berhasil.a+x
, tapi saya memperingatkan agar tidak menggunakan izin, daripadasudo
.sudo
adalah untuk satu perintah, sedangkan mengubah izin mengubahnya selamanya, yang tampaknya merupakan kebocoran keamanan yang lebih besar.--watch
seharusnya tidak diperlukan, karena ini adalah default, lihat angular.io/cli/serve . Jadi @T. Jawaban van den Berg sebenarnya lebih tepat!Bekerja dengan baik di linux dan windows
sumber
Pertimbangkan bahwa, ketika memiliki banyak file, ada Batasan di Jam Tangan INotify di Linux. Jadi, meningkatkan batas jam tangan menjadi 512K, misalnya, dapat mengatasi masalah ini.
Perhatikan bahwa sebelumnya menyebabkan perubahan dalam memori yang akan hilang setelah restart.
Namun, Anda bisa membuatnya persisten , dengan menjalankan:
Sebagai referensi, Anda dapat memeriksa: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 dan https://github.com/guard/listen/wiki/Increasing-the-amount- pengamat inotify
sumber
cat /proc/sys/fs/inotify/max_user_watches
Jawaban di atas adalah jawaban yang benar-benar lengkap, tetapi berikut ini adalah tautan dengan lebih banyak deskripsi confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+LimitKarena itu, Sistem yang mendeteksi perubahan tidak dapat menangani begitu banyak jam tangan secara default.
Dan solusinya adalah untuk
change the amount of watches
dapat menangani (jumlah maksimum file yang akan ada dalam proyek) Anda harusrun this command
:Masalah dengan inotify adalah mengatur ulang penghitung ini setiap kali Anda me-restart komputer Anda.
sumber
Di folder project dist Anda dimiliki oleh root
Coba gunakan,
sudo ng serve
bukanng serve
.Solusi lain
Jika ada banyak file, jam tangan tidak berfungsi di linux. Ada Batasan di INotify Watches di Linux. Jadi meningkatkan batas jam tangan
sumber
Hanya perlu menjalankan sudo ng serve untuk menyelesaikan masalah.
sumber
Ini dapat membantu jika itu adalah masalah yang sama dengan yang saya alami. Mencoba menggunakan
ng serve
danng build --watch
terkadang berhasil tetapi kebanyakan mereka tidak memperhatikan perubahan kode dan saya pikir itu ada hubungannya denganng
.Kemudian saya teringat masalah yang saya alami beberapa waktu lalu dengan jam tangan inotify
Saya menjalankan ini di mesin Ubuntu saya dan tampaknya telah memulai dan melihat perubahan kode:
echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
kredit diberikan kepada Scott Smith
sumber
coba ini. Jika Anda melakukan seperti ini, Anda tidak perlu selalu mengaktifkan perintah apa pun. Anda hanya perlu mengaktifkan satu kali
sumber
Tidak berhasil untuk saya:
Coba:
ini berhasil untuk saya!
sumber
Jika semuanya gagal, periksa kode Anda untuk kesalahan sintaks - terutama pada
index.html
, atau bagian dari kode Anda yang baru saja Anda edit sebelum pembaruan otomatis ini rusak. Kesalahan sintaksis akan merusak fungsionalitas pembaruan otomatis ini di Angular.Dalam kasus saya, saya memiliki beberapa proyek yang terbuka di jendela VS Code terpisah. Di semua proyek saya yang lain,
ng serve
bekerja seperti yang diharapkan: diperbarui secara otomatis saat disimpan. Tetapi pada satu proyek, pembaruan manual memerlukan pembaruan. Itu berakhir karena saya memiliki komentar html di luar area HTML yang ditentukan dari template (jadi, komentar HTML datang sebelumnya<!doctype html>
. Jadi tidak valid karena sintaks HTML di luar area HTML.Saya menghapus komentar dan bam, pembaruan otomatis mulai berfungsi lagi (setelah satu penyegaran manual lagi).
Jadi buka
index.html
atau bagian lain dari kode Anda yang baru saja Anda edit sebelum rusak dan satu per satu, potong bagian yang tidak jelas, lakukan penyegaran di browser, lalu kembali ke VS Code dan buat perubahan, simpan dan lihat apakah itu pembaruan otomatis .sumber
@Input()
, tapi atribut itu kosong, seperti ini:[myInput]=""
. Mengisinya dengan nilai yang dipulihkanng serve
, tidak diperlukan penyegaran manual.Saya menemukan bahwa folder dist / dalam proyek ini dimiliki oleh root. Itulah mengapa
sudo ng serve
melihat perubahan saatng serve
tidak.Saya menghapus folder dist /
sudo rm -R dist/
dan membangunnya kembali sebagai pengguna saat ini dengan memulai server devng serve
dan semuanya bekerja kembali.sumber
Saya mengalami masalah ini pada instalasi baru Linux Ubuntu dan memperhatikan bahwa saya mendapatkan kesalahan tentang 'terlalu banyak pengamat untuk batas' di VSCode pada saat yang bersamaan. Saya mengikuti instruksi untuk memperbaikinya di VSCode dan itu juga memperbaiki masalah dengan arloji ng. Info lebih lanjut di sini https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
Saya melihat orang-orang menyarankan
sudo
untuk menjalankan jam tangan. Ini adalah permainan yang berbahaya, Anda memberikan akses root paket npm ke sistem Anda. Jika izin Anda benar, masalah saya bisa menjadi perbaikan Anda karena batasnya adalah per pengguna, dan dengan menjalankan sebagai sudo, Anda menjalankan sebagai root alih-alih pengguna Anda saat ini yang melewati batas (menjalankan arloji ide berat seperti vscode atau atom di ). Jika karena alasan tertentu Anda memiliki izin yang salah, setel dengan benar ke pengguna / grup Andachown
.sumber
chown
alih-alih menjalankanng serve
dengansudo
, yang harus dihindari dengan segala cara!Saya memiliki masalah yang sama, menggunakan
sudo ng serve
sepertinya "memecahkan" masalah dengan tidak memuaskan. Menggunakansudo
IMO tidak memuaskan.Saya memeriksa jumlah INotify saya versus batas default saya (8192) menggunakan:
lsof | grep inotify | wc -l
Nilai yang dikembalikan oleh perintah di atas jauh lebih kecil dari batas. Jadi solusi INotify sepertinya tidak berlaku untuk masalah saya.Saya juga memeriksa izin dan kepemilikan, keduanya tampak baik-baik saja, sebanding dengan proyek lain yang berhasil.
Karena frustrasi saya memulai kembali VS Code. Pada dasarnya saya menutup semua contoh, saya menjalankan dua dan membuka kembali keduanya setelah masalah hilang.
Saya condong ke kemungkinan bug di suatu tempat. Ini adalah sesuatu yang perlu dipertimbangkan sebelum membalik sistem Anda. Untungnya / Sayangnya masalah ini tidak terjadi lagi, saya akan menggali lebih dalam jika terjadi.
sumber
Anda juga bisa mencobanya.
sumber
Saya tidak merekomendasikan mengubah parameter SO. Saya mengalami beberapa masalah (kelambatan) setelah mengubah parameter fs.inotify.max_user_watches karena Anda akan menjalankan layanan lain ...
"Ng serve --poll = 2000" adalah solusi yang bagus tetapi Anda mungkin akan melupakan parameter ini ...
Investigasi: https://github.com/angular/angular-cli/wiki/angular-cli Saya telah melakukan solusi berikut.
Mengubah de angular.json dengan parameter polling
Bekerja di Mesin Saya: D
sumber
npm run ng serve -- --poll=2000
. Ini tidak sebaik deteksi perubahan file, tetapi hanya berfungsi pada mesin saya (rasa korporat Ubuntu 18.04). Saya telah menyetel max_user_watches ke 524288, tetaping serve
masih gagal mendeteksi perubahan setelah beberapa waktu. Saya memiliki hal-hal yang lebih baik untuk dilakukan daripada menyelidiki ini, jadi solusi ini yang saya butuhkan.Melakukan
sudo ng serve
perintah adalah praktik yang buruk. Anda harus mengubahnpm
izin sehingga setiap kali Anda harus menginstal beberapanpm packages
Anda tidak perlu menggunakansudo
.Tautan ini dapat menyelesaikan cara mengubah izin npm ke pengguna saat ini dan setelah mengikuti langkah-langkah ini setelah Anda menyetel izin npm, Anda dapat menghapus
node_modules
folder dari direktori proyek Anda dan menggunakannyanpm install
. Setelah menyelesaikan instalasi paket, Anda dapat menjalankanng serve
dan Anda tidak perlu melakukannyasudo ng serve
setiap kali Anda ingin menjalankan proyek sudut Anda.sumber
untuk jendela -
Untuk Linux -
sumber
Jawaban saya mungkin tidak berguna. tapi saya mencari pertanyaan ini karena ini.
Setelah saya membeli komputer baru, saya lupa menyetel simpan otomatis di editor. Oleh karena itu, kode tersebut sebenarnya tidak berubah.
sumber
Saya ingin meninggalkan kasus saya di sini, hanya untuk referensi. Dalam kasus saya, masalahnya ada pada izin sistem. Saya menggunakan folder bersama di dalam VM sebagai repo. Saya tidak memiliki pesan lain seperti izin ditolak atau sesuatu. Mencoba semuanya dan kemudian saya baru menyadari bahwa saya menggunakan drive jaringan.
sumber
Memulai ulang server berhasil untuk saya.
sumber
Memberi izin penuh untuk folder proyek bekerja untuk saya
sumber
Dalam kasus saya di Mac, itu diperbaiki dengan memberikan izin Baca / Tulis untuk masuk pengguna ke / usr / local / lib
sumber