2017-11-01 10 views
0

新しいPhoenix 1.3プロジェクトを作成すると、config/prod.exsのエンドポイントがBia.Web.Endpointであることがわかりました。 Phoenix Hex Docsを見ると、彼らは参照番号Helloweb.Endpointを参照しています。私はmix phx.gen.htmlでコンテキストを生成すると、以下のコンパイルエラーが発生し、モジュールを見つけることができないので、後者のフォーマットはデフォルトであると仮定しています。Biaweb。私はコントローラに入り、BiawebBia.Webに改名して解決しますが、それ以上の問題が発生します。異なるフェニックスエンドポイント。例えばHelloweb v Hello.Web

== Compilation error on file lib/bia_web/controllers/user_controller.ex == 
** (CompileError) lib/bia_web/controllers/user_controller.ex:2: module BiaWeb is not loaded and could not be found 
    (elixir) expanding macro: Kernel.use/2 
    lib/bia_web/controllers/user_controller.ex:2: BiaWeb.UserController (module) 
    (elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1 

ここでは何が起こっていますか?何が正しい形式でなければなりません。

+2

「phx.new」のどのバージョンをインストールしましたか? IIRC 1.3の最終リリースでは、 'BiaWeb.Endpoint'が生成されるはずです。おそらく1.3-rcバージョンがインストールされているでしょうか? – Dogbert

+0

私は1.3rcを持っているという強い疑いを持っています。後でそのマシンに戻ったときに確認します。 –

+0

@dogbertに何を追加するか: 1. phoenixのバージョンを 'mix phx.new --version'で確認してください。 2)あなたのバージョンのElixirと' elixir --version'をダブルチェックしてください 3 。)新しいPhoenixプロジェクトの作成に使用したコマンドラインを正確に記入してください。 –

答えて

1

フェニックスは、MyAppWebの代わりにMyApp.Webの形式のモジュールを生成した最終バージョンの前に短期間でした。お使いのシステムに1.3-rcphx.newがインストールされている必要があります。以下のコマンドを実行してアップグレードすると、正しいモジュール名が生成されます。

$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez 
+0

この記事は、 'Phoenix MyApp.Web vs MyAppWeb'を検索するとGoogleでかなり高いです。 Chris自身のプレゼンテーションであっても、それはWebであり、サフィックスではなく名前空間であった。誰かがこの変更の正当性へのリンクを見つけたなら、素晴らしいだろう。私はそれを見つけることができませんでしたが、私はそれがメーリングリストや問題のどこかに埋められていると確信しています。 –