Bry*_*ock 12 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
Run Code Online (Sandbox Code Playgroud)
我也有一个问题,即"试图"尝试编译代码而不是下载远程软件包"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
Run Code Online (Sandbox Code Playgroud)
编辑附加信息:我试图用-u标志强制更新:
$ go get -u
package skincarereview: directory "/Users/Bryan/go/src/skincarereview" is not using a known version control system
Run Code Online (Sandbox Code Playgroud)
这是我尝试运行本地服务器时的错误输出:
$ /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
Run Code Online (Sandbox Code Playgroud)
我只使用了旧版本的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的正确方法如下:
go get google.golang.org/appengine
但请记住,在运行上述命令之前必须正确设置 GOPATH。它将获取 google.golang.org/appengine 及其所有依赖项。
一旦您检索了所有必需的包(并修复了错误,如果有),它应该可以毫无问题地编译和运行。