2017-05-26 5 views
12

osXにGo 1.6.4とgoogle-cloud-sdk 1.56.0.0をインストールしました。Google-cloud-sdk 156.0.0を修正する方法 "アプリケーションにファイルが多すぎるため、すべてのファイルの変更を監視できません。"

ローカルの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 "を参照してください。 私は-uフラグで更新を強制することを試みた:

$は

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

EDIT追加情報取りに行く
$を

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

これは誤りであると-u取りに行きますローカルサーバーを実行しようとすると出力されます。

$ /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

私の推測では、DEVサーバはappディレクトリ内のものに加えてGOPATH内のすべての.GOのファイルを監視していることです。パッケージが既にGOPATH上にある場合、デフォルトで 'go get'はダウンロードされません。 'go get -u'を使ってソースからの更新を強制します。 –

+0

それは私のGOPATH(/ Users/Bryan/go)が間違っているということですか? – BryanWheelock

+0

私はGOPATHが間違っているとは思わない。また、これは自動再コンパイルに関する単なる警告です。他のすべてはうまくいくはずです。 –

答えて

3

私は以前のバージョンのappengine sdkしか使用していませんでしたが、私は以下が正しいと考えています。

主な問題は、あなたのGOPATH内にgoogle-cloud-sdkがあることです。これは必要ではありません。私はそれを私の道に設置した。しかし、それがインストールされていなくても、あなたが実行している実行可能ファイルまたはスクリプトに相対的な場所を解決する必要があり、必要なすべてのsdkファイルが適切に見つかるはずです。同時に、SDKは約7500個のファイルで、 "たくさんのファイルに"という警告を出すにはGOPATHに10000(約)以上必要です。そのため、同じGOPATH内に別の(たとえば古い)SDKや他の大きなプロジェクトのコピーがある場合は、その閾値を超えることはほぼ保証されています。/Users/Bryan/Finderに移動し、 "情報を見る"を使用してファイルを数えます。

したがって、appengine SDKをGOPATHの外に移動してください。または、新しいフォルダを作成し、それを新しいGOPATHとしてエクスポートし、プロジェクトファイル(SDKではなく)をその新しいフォルダに移動します。これは、 "ファイルの数が多すぎる"問題を修正するはずです。

もう1つの問題は、アプリが実際にビルドできないことです。そしてあなたがすでに自分自身を理解しているので、(直ちに)問題はappengineパッケージが欠けています。

しかし、次のようにgoogle.golang.org/appengineを得るための正しい方法は次のとおりです。 go get google.golang.org/appengine

けれどもはGOPATHは、上記のコマンドを実行する前に、正しく設定しなければならないことに注意してください。 google.golang.org/appengineとそのすべての依存関係を取得します。

すべての必要なパッケージ(およびもしあれば、修正されたエラーがあれば)を取得したら、問題なくコンパイルして実行する必要があります。

+0

私はgoogle-cloud-sdkが期待されていると思いました〜/ go/src〜/ go/srcには自分のコードと依存関係のみが含まれ、google-cloud-sdkは除外してください。 – BryanWheelock

+0

$ GOPATHが必要です:google.golang.org/appengine – BryanWheelock

+0

パッケージgoogle.golang.org/appengine:ダウンロードできません。$ GOPATHが設定されていません。もっと詳しく知りたければgo:ヘルプgopathを参照してください。 – BryanWheelock

0

私は、Cloud EngineではなくApp Engine SDK for 1.9.54のみを使用していますが、同じ問題があります。[Goapp serve - Warning: There are too many files

大きなパッケージとリポジトリをvendor/ dirに移動して解決しました。

2

私の現在のSDKバージョン(Google Cloud SDK 171.0.0dev_appserver.pyには、enable_watching_go_pathという1つのオプションがあります。

Falseに設定すると警告が削除されました。

私が使用するコマンドは次のとおりです。mtime_file_watcher.pyは「GOPATH」の下にあるすべてのファイルを監視しようとしますが、あまりにも多くのファイルを持っているので、チェックするのapp.yamlのskip_filesオプションを使用する場合 がdev_appserver.py --enable_watching_go_path=False server/app.yml

関連する問題