google-app-engine - 如何修复 Google-cloud-sdk 156.0.0 "There are too many files in your application for changes in all of them to be monitored."?

标签 google-app-engine go

我刚刚在 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

我还遇到了一个问题,即“go get”尝试编译代码而不是下载远程包“google.golang.org/appengine”。

$ 去获取

# 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

最佳答案

我只使用了旧版本的 appengine sdk,但我相信下面的仍然是正确的。

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

因此,要么将 appengine SDK 移到 GOPATH 之外。或者创建一个新文件夹,将其导出为您的新 GOPATH 并将您的项目文件(但不是 SDK)移动到该新文件夹。这应该可以解决“文件过多问题”。

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

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

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

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

关于google-app-engine - 如何修复 Google-cloud-sdk 156.0.0 "There are too many files in your application for changes in all of them to be monitored."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44208305/

相关文章:

http - Golang http 服务文件 - 提供并行下载支持 - contentLength 和接受范围不起作用

go - 在 Go 中使用 fork 包导入

python - Google 应用引擎和 numpy 无法在本地开发服务器上协同工作

python - 我可以使用 python 正则表达式来表示字母、破折号和下划线吗?

java - 请求线程是否在 http 请求之间重用?

go - 返回消息列表

python - 通过 Google App Engine 上的 Bottle 启用 Beaker SessionMiddleware

python - GQL 查询对象内存泄漏

json - Go : When will json. Unmarshal to struct 返回错误?

docker - 在 docker 构建期间不能 `go get` 依赖项