Windowsでgo-revelを使用する問題

916 ワード

最近プロジェクトではrevelフレームワークを用いてgolang開発が行われ、プロジェクトフレームワークはrevelの標準定義に従って開発され、vendorを用いて依存管理が行われた結果、revel runを用いてプロジェクトをコンパイルする際にrevelが自動的に生成したtmp/main.goでは、依存するrevelパスが正しくなく、プロジェクト接頭辞が多くgithubで始まるのではなく、正常にコンパイルできなくなり、起動できなくなり、しかもこのmain.goは自動生成で、修正するたびに自動生成されます.しかし、同僚のパソコンに問題がないことに気づいた.彼はlinuxシステムで、システムと関係があると推定し、後にrevelのソースコードを見たが、案の定、revelは自動的にファイルを生成する際にvendorへの依存に対して、システムの問題を考慮しなかった.revel/cmd/harness/reflect.goにおいてvendorに依存する経路を扱う際に用いられるハードコーディング/vendor/は,恐ろしい
if vendorIdx := strings.Index(root, "/vendor/") ; vendorIdx != -1 {
    return filepath.ToSlash(root[vendorIdx+8:])
}

修正して再度instal revel、実行してOKになって、現在githubの上で互換性がなくて、後でMRを持つ時間があります
if vendorIdx := strings.Index(root, filepath.FromSlash("/vendor/")) ; vendorIdx != -1 {
    return filepath.ToSlash(root[vendorIdx+8:])
}