2017-07-09 40 views
6

मैं Google ऐप इंजन (मानक) में एक छोटा परीक्षण ऐप तैनात करने की कोशिश कर रहा हूं। अगर मैं कोई विक्रेता पुस्तकालय शामिल करता हूं तो मुझे एक त्रुटि मिलती है।क्या Google App Engine के साथ गो विक्रेता पुस्तकालयों का उपयोग करना संभव है?

यह त्रुटि मैं जब कुछ संदर्भ के लिए

% gcloud app deploy 
Services to deploy: 

descriptor:  [/Users/matt/work/appenginetest1/src/hello/default/app.yaml] 
source:   [/Users/matt/work/appenginetest1/src/hello/default] 
target project: REDACTED 
target service: [default] 
target version: [20170709t220721] 
target url:  REDACTED 


Do you want to continue (Y/n)? y 

Beginning deployment of service [default]... 
╔════════════════════════════════════════════════════════════╗ 
╠═ Uploading 0 files to Google Cloud Storage    ═╣ 
╚════════════════════════════════════════════════════════════╝ 
File upload done. 
Updating service [default]...failed. 
ERROR: (gcloud.app.deploy) Error Response: [9] Deployment contains files that cannot be compiled: Compile failed: 
go-app-builder: build timing: 2×compile (210ms total), 0×link (0s total) 
go-app-builder: failed running compile: exit status 2 

main.go:6: can't find import: "github.com/julienschmidt/httprouter" 

तैनात करने की कोशिश कर रहा हो जाता है, यह $ GOPATH

% tree $GOPATH 
/Users/matt/work/appenginetest1 
└── src 
    └── hello 
     ├── default 
     │   ├── app.yaml 
     │   └── main.go 
     ├── glide.lock 
     ├── glide.yaml 
     └── vendor 
      └── github.com 
       └── julienschmidt 
        └── httprouter 
         ├── path.go 
         ├── router.go 
         └── tree.go 

के वृक्ष dev_appserver.py के माध्यम से स्थानीय सर्वर चल रहा है काम करता है ठीक है। यह एप्लिकेशन इंजन का मामला तरह नहीं दिखता है के रूप में भी बादल

% gcloud app deploy 
ERROR: (gcloud.app.deploy) Staging command [/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/platform/google_appengine/goroot-1.6/bin/go-app-stager /Users/matt/work/appenginetest1/src/hello/default/app.yaml /var/folders/nx/8w2_6q551cl50h3ff6lmy9s40000gn/T/tmp97Kiis/tmpe0MHQ0] failed with return code [1]. 

------------------------------------ STDOUT ------------------------------------ 
------------------------------------ STDERR ------------------------------------ 
2017/07/09 22:12:52 failed analyzing /Users/matt/work/appenginetest1/src/hello/default: cannot find package "github.com/julienschmidt/httprouter" in any of: 
    /Users/matt/work/appenginetest1/src/hello/vendor/github.com/julienschmidt/httprouter (vendor tree) 
    ($GOROOT not set) 
    /Users/matt/work/appenginetest1/src/github.com/julienschmidt/httprouter (from $GOPATH) 
GOPATH: /Users/matt/work/appenginetest1 
-------------------------------------------------------------------------------- 

को आगे बढ़ाने से पहले

% rm -rf ~/work/appenginetest1/src/hello/vendor/github.com 

यह त्रुटियों चलाने के बाद विक्रेता निर्देशिका नहीं लग रहा है, तो मैं से github.com निर्देशिका के लिए कदम स्रोत के लिए विक्रेता, तैनाती बिना किसी मुद्दे के काम करता है।

app.yaml

service: default 
runtime: go 
api_version: go1 


handlers: 
- url: /.* 
    script: _go_app 

main.go

package hello 

import (
    "fmt" 
    "net/http" 
    "github.com/julienschmidt/httprouter" 
) 

func init() { 
    router := httprouter.New() 
    router.GET("/hello/:name", Hello) 
    http.Handle("/", router) 
} 

func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { 
    fmt.Fprintf(w, "Hello, %s!", ps.ByName("name")) 
} 

अगर मैं विक्रेता से github.com निर्देशिका के लिए कदम ग्लाइड स्थापित चलाने के बाद src को तैनात करने के लिए मैं इस परियोजना मिल सकती है।

+0

मैट, क्या आपको कभी इस समस्या का हल समाधान मिला है? –

उत्तर

0

ध्यान रखें कि आपके $GOPATH वातावरण चर वास्तव में कई स्थानों की एक सूची से (https://golang.org/cmd/go/#hdr-GOPATH_environment_variable अधिक के लिए देखें) कर सकते हैं:

GOPATH वातावरण चर सूचियों स्थानों पर जाएं कोड देखने के लिए। यूनिक्स पर, मान एक कोलन से अलग स्ट्रिंग है। विंडोज़ पर, मान अर्धविराम से अलग स्ट्रिंग है। योजना 9 पर, मूल्य एक सूची है।

बल्कि src लिए विक्रेता से github.com निर्देशिका चलती से, आप एक स्क्रिप्ट जो अस्थायी रूप से अपने $GOPATH वातावरण चर को vendor/github.com निर्देशिका कहते हैं लिख सकता है, तैनाती करता है, और फिर वातावरण चर से निकालता है।