我正在使用Go后端+ Polymer前端构建Google App Engine应用程序。因此,我正在使用dispatch.yaml文件同时提供这两个文件。
我遇到的问题是当我重新启动计算机时数据存储区为空。我已经在OSX 10.9.5和10.10.4上测试了这个。两者在系统重启时都表现出相同的响应。但是,Windows 7似乎仍然坚持数据。
文档表明数据应该持续存在,因为我没有明确表示清楚。不是。我尝试使用此设置数据存储位置:
dev_appserver.py --datastore_path=~/go_apps/data ~/go_apps/my_app
我收到此错误:
google.appengine.tools.devappserver2.errors.AppConfigNotFoundError: "/Users/anthony/go_apps/my_app is a directory but does not contain app.yaml or app.yml
显然,因为我使用的是dispatch.yaml文件,所以不会。因此,由于处理数据的backend
确实有一个app.yaml
文件,我尝试将其设置在那里。我用这个命令:
dev_appserver.py --datastore_path=~/go_apps/data ~/go_apps/my_app/backend
这似乎也不起作用,因为我收到了这个错误:
sqlite3.OperationalError: unable to open database file
好?好吧,不知道现在在哪里转。根据我从其他帖子中收集的内容,该数据会暂时存储。但是,我似乎无法为数据设置自定义的非临时位置。所以,现在我每次重新启动时都会填充数据存储区,这看起来很荒谬。
*编辑*
我尝试过以下操作,似乎尝试启动应用,并在正确的位置创建datastore.db
文件:
dev_appserver.py --datastore_path ~/go_apps/my_app/data/datastore.db ~/go_apps/my_app/dispatch.yaml ~/go_apps/my_app/backend/app.yaml ~/go_apps/my_app/frontend/app.yaml
然而,我现在遇到了一个奇怪的错误:
/var/folders/04/3hxnpxc15wj2k4v40lkdncd00000gn/T/tmpkcQYnFappengine-go-bin/backend.go:13: can't find import: "github.com/gorilla/mux"
Go是否暂时构建到该文件夹?该导入绝对可用,并始终建立良好的调用goapp serve
。
以下是backend.go
import (
//standard library
"fmt"
"net/http"
"time"
"log"
//third party
"github.com/gorilla/mux"
"github.com/gorilla/securecookie"
"github.com/dgrijalva/jwt-go"
"golang.org/x/crypto/bcrypt"
//my imports
"github.com/section14/go_polymer_comm_pkg/controller"
)
答案 0 :(得分:3)
您必须传递文件的名称以用作持久数据存储,不文件夹。
然后提供应用的文件夹(其中包含app.yaml
)。不要混合2.所以它应该是这样的:
dev_appserver.py --datastore_path=~/my_app/my_app.db ~/go_apps/my_app
详情可在此处找到:
The Go Development Server / Using the Datastore
备注:强>
默认数据存储区文件位于temp文件夹中,并且您的OS-X很可能会在系统重新启动时清除它,这就是为什么不为您保留它的原因。另一方面,Windows 7例如在系统重启时不清除临时文件夹。
答案 1 :(得分:1)
通过将GOPATH
和GOROOT
环境变量添加到我的.bash_profile来实现并运行。总共需要运行这三个路径(第一个路径已经设置):
# Add Google AppEngine path
export PATH=/Users/anthony/go_appengine:$PATH
# GOPATH
export GOPATH=/Users/anthony/go_appengine/gopath
export PATH=$PATH:$GOPATH
# GOROOT
export GOROOT=/Users/anthony/go_appengine/goroot
export PATH=$PATH:$GOROOT
从项目文件夹内部(我的驻留在appengine文件夹之外)调用此命令,以便启动它:
dev_appserver.py --datastore_path data/datastore.db dispatch.yaml backend/app.yaml frontend/app.yaml
请注意,.yaml
文件仍然存在。它可以很好地构建它们,如果你不需要dispatch.yaml
文件,它们可能在没有它们的情况下构建得很好。
感谢@icza的指导。希望在帖子中组织步骤以便于阅读。