如何修复Google-cloud-sdk 156.0.0“您的应用程序中有太多文件需要对所有文件进行更改才能进行监控。”?

问题描述 投票:12回答:4

我刚刚在osX上安装了Go 1.6.4和google-cloud-sdk 1.56.0.0。

当我尝试运行本地dev_server时,我收到以下警告。

/Users/Bryan/go/src/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/mtime_file_watcher.py:156:用户警告:您的应用程序中有太多文件要求将所有文件更改为受到监控。您可能必须重新启动开发服务器才能看到对文件的某些更改。

我该如何解决?

这是项目,只有4个文件:

$ ls
total 32
drwxrwxrwx   6 Bryan  staff   204 May 23 15:57 .
drwxr-xr-x  10 Bryan  staff   340 May 25 18:39 ..
-rwxrwxrwx@  1 Bryan  staff    69 Mar 22 09:40 app.yaml
-rw-r--r--   1 Bryan  staff   554 Mar 28 09:26 index.yaml
-rwxrwxrwx@  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

编辑其他信息:我试图使用-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
google-app-engine go
4个回答
3
投票

我只使用了较旧版本的appengine sdk,但我相信下面仍然如此。

主要问题是你的GOPATH中有google-cloud-sdk。这不应该是必要的。我把它安装在我的路径上。但即使没有安装它也应该解析它相对于你正在运行的可执行文件或脚本的位置,并且应该正确地找到所有必需的sdk文件。同时SDK大约有7500个文件,你只需要在你的GOPATH中有超过10000个(大约)来获得“到多个文件”的警告。因此,如果您在同一GOPATH中有另一个(例如较旧的)SDK或其他大项目的副本,则几乎可以保证超过阈值。只需找到/ Users / Bryan /进入Finder并使用“获取信息”来计算文件。

所以,要么在你的GOPATH之外移动appengine SDK。或者创建一个新文件夹,将其导出为新的GOPATH并将项目文件(但不是SDK)移动到该新文件夹。这应该修复“太多文件问题”。

另一个问题是您的应用实际上无法构建。而且你已经发现自己(直接)问题是缺少appengine包。

但获取google.golang.org/appengine的正确方法如下: go get google.golang.org/appengine

但请记住,在运行上述命令之前必须正确设置GOPATH。它将获取google.golang.org/appengine及其所有依赖项。

一旦检索到所有必需的包(以及修复的错误,如果有的话),它应该编译并运行没有问题。


3
投票

我目前的sdk版本(Google Cloud SDK 171.0.0dev_appserver.py有一个名为enable_watching_go_path的选项。

将它设置为False删除了警告。

我使用的命令是:dev_appserver.py --enable_watching_go_path=False server/app.yml


1
投票

当mtime_file_watcher.py尝试监视“GOPATH”下的所有文件但文件太多时会发生相应的错误,因此使用app.yaml的skip_files选项来检查vendor,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

0
投票

我只使用App Engine SDK for Go(1.9.54),而不是Cloud SDK,但有同样的问题[Goapp serve - Warning: There are too many files

我通过将大型软件包和存储库移动到vendor/目录来解决它。

© www.soinside.com 2019 - 2024. All rights reserved.