Setup for elm in phoenix 1.3.0-rc directory structure

No, the error is the same

iex(1)> 16:39:50 - error: Processing of js/app.js failed. Error: Could not load module ‘./elm.js’ from ‘/home/ubuntu/workspace/my_app/assets/js’. Make sure the file actually exists.

1 Like

Since I was just struggling with the same annoying problem, thank you, @dustinfarris, for preventing the vein on my forehead from bursting, and @windholtz for asking the question.

I wish Phoenix would use Webpack 2 as its default build tool. Brunch’s documentation is just awful and the path structure is really confusing. Code splitting is also a lot less of a problem with Webpack 2.

Sorry to resurrect an old discussion, but I was using the posts here for reference and had a query:

How come there are two “output directories” for the Elm code:

paths: {
    ...
    public: "../priv/static"
},

and (from @windholtz’s repo):

elmBrunch: {
    ...
    outputFolder: "../assets/js"
}

Also, it seems like there’s a case of “the chicken and the egg” here - js/app.js seems to be built before the main.js that is built from main.Elm. It fails the first time, then succeeds because main.js now exists, though I suspect will always be one compile behind.

2 Likes

Also, it seems like there’s a case of “the chicken and the egg” here - js/app.js seems to be built before the main.js that is built from main.Elm. It fails the first time, then succeeds because main.js now exists, though I suspect will always be one compile behind.

I also have this problem. It prevents me from adding the generated elm.js to .gitignore so I have a big ugly js file in my git repo. Not sure how to tell phoenix to compile elm.js before running app.js.

1 Like

That is mostly just because the elm plugin for brunch is borked. If you drop brunch or make a custom plugin or so then it could be fixed.

That temporal ordering problem between app.js and the Elm compilation step is a real pain, especially for a Phoenix noob like me. Seeing the popup notification on my desktop like 10 seconds later is a further insult :grinning:
It would certainly seem neater to go with Webpack or even just NPM as the build tool.

1 Like

@Desty @Most that compilation order bug in elm-brunch was introduced in this PR: https://github.com/madsflensted/elm-brunch/pull/30.

There is an open issue on it since March but I don’t think the maintainer is active right now. The easiest fix is specify the previous version - 0.7.0 in your package.json.

Glad I’m not the only one. New to Phoenix and Elm I thought I was just being stupid or the instructions I was following when trying to set it up were buggy. Turns out it’s a change in the Phoenix directory structure that 1.3 brought that was causing the instructions not to work.