AppEngine“appengine”软件包始终因“syscall”或“unsafe”导入失败而失败

时间:2016-08-02 04:09:05

标签: google-app-engine go

使用AppEngine 1.9.40 SDK,我甚至无法导入“appengine”包。

的app.yaml:

application: testapp
version: 1
runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

转到代码:

package main

import (
    "google.golang.org/appengine"
)

func init() {
    appengine.IsDevAppServer()
}

func main() {
    // This is only here because go-get needs on it.
}

命令行:

$ GOPATH=$(pwd) goapp serve

错误:

2016/08/01 23:58:02 go-app-builder: Failed parsing input: parser: bad import "unsafe" in src/golang.org/x/net/icmp/helper.go

可以做些什么来克服这个问题?

1 个答案:

答案 0 :(得分:0)

应用程序目录树中的所有代码(根目录是包含app.yaml的目录)都会编译到应用程序中。 Appengine拒绝使用“不安全”的代码。

修复方法是将违规代码移出应用程序目录树。这是安排代码的一种可能方式:

$GOPATH
    src
        testapp
            app.yaml
            app.go
        golang.org
            x
                net
                    icmp
                    ... and so on

使用包main也可能会造成一些麻烦。如果上述操作无效,请更改包名称。

Appengine应用程序无法获取。不要挣扎这么做。

https://github.com/golang/gddo/issues/428处有关于此主题的更多讨论。