Как исправить Google-cloud-sdk 156.0.0 "В вашем приложении слишком много файлов для внесения изменений во все из них для контроля".?

Я только что установил Go 1.6.4 и google-cloud-sdk 1.56.0.0 на osX.

Когда я пытаюсь запустить локальный dev_server, я получаю следующее предупреждение.

/Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/mtime_file_watcher.py:156: UserWarning: в вашем приложении слишком много файлов для изменений во всех из них следует контролировать. Возможно, вам придется перезапустить сервер разработки, чтобы увидеть некоторые изменения в ваших файлах.

Как это исправить?

Вот проект, есть только 4 файла:

$ ls
total 32
drwxrwxrwx   6 Bryan  staff   204 May 23 15:57 .
drwxr-xr-x  10 Bryan  staff   340 May 25 18:39 ..
[email protected]  1 Bryan  staff    69 Mar 22 09:40 app.yaml
-rw-r--r--   1 Bryan  staff   554 Mar 28 09:26 index.yaml
[email protected]  1 Bryan  staff  3015 May 25 18:36 skincare.go
-rw-r--r--   1 Bryan  staff   870 May  3 09:18 skincare_test.go

У меня также возникла проблема, заключающаяся в попытке скомпилировать код вместо загрузки удаленных пакетов "google.golang.org/appengine".

$go get

# import "google.golang.org/appengine" is ignored and "go get" yields this error:
./skincare.go:31: undefined: appengine.Context

EDIT дополнительная информация: Я попытался заставить обновление с флагом -u:
$ go get -u

package skincarereview: directory "/Users/Bryan/go/src/skincarereview" is not using a known version control system

Это ошибка, когда я пытаюсь запустить локальный сервер:

$  /Users/Bryan/go/src/google-cloud-sdk/bin/dev_appserver.py app.yaml
INFO     2017-05-30 14:27:31,722 devappserver2.py:692] Skipping SDK update check.
INFO     2017-05-30 14:27:31,785 api_server.py:272] Starting API server at: http://localhost:60703
INFO     2017-05-30 14:27:31,789 dispatcher.py:205] Starting module "default" running at: http://localhost:8080
INFO     2017-05-30 14:27:31,793 admin_server.py:116] Starting admin server at: http://localhost:8000
/Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/mtime_file_watcher.py:156: UserWarning: There are too many files in your application for changes in all of them to be monitored. You may have to restart the development server to see some changes to your files.
  'There are too many files in your application for '
ERROR    2017-05-30 14:27:36,123 go_runtime.py:182] Failed to build Go application: (Executed command: /Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/goroot/bin/go-app-builder -app_base /Users/Bryan/go/src/skincarereview -arch 6 -dynamic -goroot /Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/goroot -gopath /Users/Bryan/go -nobuild_files ^^$ -incremental_rebuild -unsafe -binary_name _go_app -extra_imports appengine_internal/init -work_dir /var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/tmpEOVMVuappengine-go-bin -gcflags -I,/Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/goroot/pkg/darwin_amd64_appengine -ldflags -L,/Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/goroot/pkg/darwin_amd64_appengine skincare.go skincare_test.go)
/var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/tmpEOVMVuappengine-go-bin/skincare.go:31: undefined: "google.golang.org/appengine".Context

2017/05/30 10:27:36 go-app-builder: build timing: 0×skip (5ms total), 11×compile (2.128s total), 0×link (0 total)
2017/05/30 10:27:36 go-app-builder: failed running compile: exit status 2

Ответ 1

Я использовал только старую версию appengine sdk, но я считаю, что это все еще верно.

Основная проблема заключается в том, что у вас есть google-cloud-sdk внутри вашего GOPATH. Это не обязательно. Я установил его на своем пути. Но даже если он не установлен, он должен разрешить его местоположение относительно исполняемого файла или script, который вы используете, и должен найти все необходимые файлы sdk. В то же время SDK составляет примерно 7500 файлов, и вам нужно иметь больше, чем 10000 (приблизительно) в вашем GOPATH, чтобы получить предупреждение "для многих файлов". Итак, если у вас есть другая (например, более старая) копия SDK или другого крупного проекта внутри одного GOPATH, вы почти наверняка превысите порог. Просто найдите/Пользователи/Bryan/зайдите в Finder и используйте "Get Info" для подсчета файлов.

Итак, либо переместите SDK appengine за пределы вашего GOPATH. Или создайте новую папку, экспортируйте ее как новый GOPATH и переместите файлы проектов (но не SDK) в эту новую папку. Это должно исправить "слишком много проблем с файлами".

Другая проблема заключается в том, что ваше приложение фактически не удается создать. И, как вы уже поняли, проблема (немедленная) отсутствует в пакете appengine.

Но правильный способ получения google.golang.org/appengine выглядит следующим образом: go get google.golang.org/appengine

Помните, что перед запуском указанной команды необходимо правильно установить GOPATH. Он будет искать google.golang.org/appengine и все его зависимости.

После того, как вы получили все необходимые пакеты (и исправленные ошибки, если они есть), они должны компилироваться и запускаться без проблем.

Ответ 2

С моей текущей версией sdk (Google Cloud SDK 171.0.0) dev_appserver.py имеет один параметр с именем enable_watching_go_path.

Установив его на False, удалите предупреждение.

Используемая мной команда: dev_appserver.py --enable_watching_go_path=False server/app.yml

Ответ 3

Я использую только SDK для App Engine для Go (1.9.54), а не Cloud SDK, но имею ту же проблему [Goapp serve - Warning: Слишком много файлы.

Я решил это, перемещая большие пакеты и репозитории в vendor/ dir.

Ответ 4

Соответствующая ошибка возникает, когда mtime_file_watcher.py пытается контролировать все файлы в разделе "GOPATH", но имеет слишком много файлов, поэтому используйте опцию skip_files для app.yaml для проверки поставщика, node_modules и произвольного количества файлов. Можно избежать исключая многие проекты для мониторинга.

https://cloud.google.com/appengine/docs/standard/python/config/appref#skip_files

skip_files:
- .*node_modules
- .*vendor
- .*project-name-having-too-many-files