Мне нужно запускать ng serve
каждый раз, когда в исходные файлы вносятся какие-либо изменения, в консоли нет ошибки.
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
Ответы:
В большинстве случаев в Linux
ng serve
илиng build --watch
не работает, если каталог не имеет достаточных разрешений.Решение - либо предоставить необходимые разрешения, либо использовать их
sudo
вместо них.ОБНОВИТЬ
Флаг просмотра в
ng serve
действительности избыточен, так как это опция по умолчанию. Благодарим @Zaphoid за указание на ошибку.источник
ng serve
сsudo
разрешениями. Это сработало.a+x
, но я предостерегаю от использования разрешений, а неsudo
.sudo
предназначена для одной команды, тогда как изменение разрешений меняет их навсегда, что кажется большей утечкой безопасности.--watch
не обязательно, так как это значение по умолчанию, см. angular.io/cli/serve . Итак, @T. Ответ ван ден Берга был на самом деле более точным!Работает нормально в Linux и Windows
источник
Учтите, что при большом количестве файлов существует ограничение на INotify Watches в Linux. Так что, например, увеличение лимита часов до 512 КБ может решить эту проблему.
Обратите внимание, что предыдущее изменение вызывает изменение в памяти, которое вы потеряете после перезапуска.
Однако вы можете сделать его постоянным , выполнив:
В качестве справки вы можете проверить: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 и https://github.com/guard/listen/wiki/Increasing-the-amount- of-inotify-watchers
источник
cat /proc/sys/fs/inotify/max_user_watches
Над ответом будет полностью полный ответ , но вот связь с немного больше описание confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+LimitИз-за того, что система, которая обнаруживает изменения, по умолчанию не может обрабатывать такое количество часов.
И решение состоит в том, что
change the amount of watches
он может обрабатывать (максимальное количество файлов, которые будут в проекте), вы должныrun this command
:Проблема с inotify - сбрасывать этот счетчик каждый раз при перезагрузке компьютера.
источник
В вашем проекте папка dist принадлежит root
Попробуйте использовать
sudo ng serve
вместоng serve
.Другое решение
Когда есть большое количество файлов, часы не работают в linux. Существует ограничение на INotify Watches в Linux. Так что увеличение лимита часов
источник
Для решения проблемы нужно только запустить sudo ng serve.
источник
Это может помочь, если это та же проблема, что и у меня. Пытался использовать
ng serve
иng build --watch
иногда работал, но в основном они не следили за изменениями кода, и я думал, что это как-то связаноng
.Затем я вспомнил о проблеме, которая у меня была некоторое время назад с часами inotify.
Я запустил это на своей машине с Ubuntu, и, похоже, он начал следить за изменениями кода:
echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
кредит принадлежит Скотту Смиту
источник
попробуй это. Если вы это сделаете, вам не нужно запускать всегда любую команду, вам нужно запускать только один раз
источник
У меня не сработало:
Пытаться :
это сработало для меня!
источник
Если все остальное не помогает, проверьте свой код на наличие синтаксических ошибок, особенно в
index.html
части кода, которую вы недавно редактировали непосредственно перед тем, как это автоматическое обновление сломалось. Синтаксические ошибки нарушат функцию автоматического обновления в Angular.В моем случае у меня было несколько проектов, открытых в отдельных окнах VS Code. Во всех других моих проектах все
ng serve
работало, как ожидалось: оно автоматически обновлялось при сохранении. Но в одном проекте для обновления потребуется ручное обновление. В конечном итоге это произошло из-за того, что у меня были html-комментарии за пределами определенной области HTML в шаблоне (так что комментарии HTML были раньше<!doctype html>
. Так что это было недопустимым синтаксисом HTML вне области HTML.Я стер комментарии и бац, автообновление снова заработало (после еще одного обновления вручную).
Так что просмотрите
index.html
или другие части вашего кода, которые вы недавно редактировали до того, как это сломалось, и одну за другой, вырезайте схематичные части, обновите в браузере, затем вернитесь в VS Code и внесите изменения, сохраните и посмотрите, обновляется ли он автоматически .источник
@Input()
, но атрибут был пустым, как это:[myInput]=""
. Заполнение его восстановленным значениемng serve
, ручное обновление не требуется.Я обнаружил, что папка dist / в проекте принадлежит пользователю root. Вот почему
sudo ng serve
видит изменения, когдаng serve
не видит .Я удалил папку dist /
sudo rm -R dist/
и перестроил ее как текущий пользователь, запустив сервер разработки,ng serve
и все снова заработало.источник
У меня возникла эта проблема при новой установке Linux Ubuntu, и я заметил, что одновременно получаю сообщение об ошибке «слишком много наблюдателей для ограничения» в VSCode. Я выполнил инструкции, чтобы исправить это в VSCode, а также исправил проблему с ng watch. Подробнее здесь https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
Я заметил, что люди предлагают
sudo
запустить часы. Это опасная игра, вы предоставляете пакетам npm root-доступ к вашей системе. Если ваши разрешения верны, моя проблема может быть вашим исправлением, так как ограничение для каждого пользователя, и, работая как sudo, вы работаете как root, а не ваш текущий пользователь, который превышает предел (запускает часы с тяжелым ide, например vscode или atom на). Если по какой-то причине у вас неправильные разрешения, установите их правильно для вашего пользователя / группы с помощьюchown
.источник
chown
вместо запускаng serve
сsudo
, чего следует избегать всеми средствами!У меня была такая же проблема,
sudo ng serve
казалось , что использование "решило" проблему неудовлетворительно. Использованиеsudo
IMO неудовлетворительно.Я проверил свой счетчик INotify по сравнению с моим пределом по умолчанию (8192), используя:
lsof | grep inotify | wc -l
Значение, возвращаемое приведенной выше командой, было намного меньше предела. Таким образом, решение INotify, похоже, не применимо к моей проблеме.Я также проверил разрешения и право собственности, и то, и другое выглядело нормально, сравнимо с другим работающим проектом.
Из-за разочарования я перезапустил VS Code. В основном я закрыл все экземпляры, у меня было два запущенных, и я снова открыл оба, после чего проблема исчезла.
Я где-то склоняюсь к возможной ошибке. Это следует учитывать, прежде чем выворачивать систему наизнанку. К счастью / к сожалению, эта проблема больше не возникала, я буду копать глубже, если это произойдет.
источник
Вы тоже можете попробовать это.
источник
Не рекомендую менять параметры SO. У меня возникли некоторые проблемы (лаг) после изменения параметра fs.inotify.max_user_watches, так как у вас будут работать другие службы ...
"Ng serve --poll = 2000" - хорошее решение, но вы, вероятно, забудете этот параметр ...
Изучение: https://github.com/angular/angular-cli/wiki/angular-cli Я сделал следующее решение.
Изменен файл angular.json с параметром опроса
Работает на моей машине: D
источник
npm run ng serve -- --poll=2000
. Это не так хорошо, как обнаружение изменения файла, но просто работает на моей машине (корпоративный вариант Ubuntu 18.04). У меня max_user_watches установлено на 524288, ноng serve
через некоторое время все равно не удается обнаружить изменения. У меня есть дела поважнее, чем исследовать это, так что это решение как раз то, что мне нужно.Выполнение
sudo ng serve
команды - плохая практика. Вы должны изменитьnpm
разрешение, чтобы каждый раз, если вам нужно установить некоторые,npm packages
вам не приходилось использоватьsudo
.Эта ссылка может решить, как изменить разрешение npm для текущего пользователя, и после выполнения этих шагов после установки разрешения npm вы можете удалить
node_modules
папку из каталога проекта и использоватьnpm install
. После завершения установки пакетов вы можете запускать,ng serve
и вам не нужно делать этоsudo ng serve
каждый раз, когда вы хотите запускать свой проект angular.источник
для окна -
Для Linux -
источник
Мой ответ может оказаться бесполезным. но я ищу этот вопрос из-за этого.
После покупки нового компьютера я забываю установить автосохранение в редакторе. Поэтому код фактически остается неизменным.
источник
Я хотел бы оставить здесь свой случай для справки. В моем случае проблема была в разрешениях системы. Я использовал общую папку внутри виртуальной машины в качестве репо. У меня не было другого сообщения вроде отказа в разрешении или чего-то подобного. Все перепробовал, а потом просто понял, что использую сетевой диск.
источник
У меня сработал перезапуск сервера.
источник
Предоставление полного разрешения для папки проекта сработало для меня
источник
В моем случае на Mac это было исправлено предоставлением разрешения на чтение / запись зарегистрированному пользователю в / usr / local / lib.
источник