Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash trying to create a "file://" dist version #52

Open
carlok opened this issue Mar 3, 2017 · 3 comments
Open

Crash trying to create a "file://" dist version #52

carlok opened this issue Mar 3, 2017 · 3 comments

Comments

@carlok
Copy link

carlok commented Mar 3, 2017

Hello, thanks for your tutorial and project.
I tried to create the prod version with
ng build --aot --prod --bh ./ # or variants
it works when served within a http server but it doesn't when it's called as "file://..."
while the basic angular/cli works generating the "app works!" trivial example.
I have to create a demo, static only, angular2 cli generated dist to be called as "file://" and I tried with your project. I suppose it is just a question of using the right commands 'cause it should not be necessary to have a real webserver, even for the html5 internal routing.
Am I wrong? What is the sequence of shell commands to get, in dist folder, a working version that can be called in the browser as "file://<absolute_path>/dist/index.html"? Thank you for your time.

@housseindjirdeh
Copy link
Owner

housseindjirdeh commented Mar 7, 2017

Sorry for not getting back to you sooner!

So this is interesting. That command should be just fine actually (since all the src and href links in index.html are just their names) However ng build --prod --bh ./ gives me the following error in Chrome

SecurityError: Failed to execute 'replaceState' on 'History': A history state object with URL 'file:///[MyFilePath]/angular2-hn/dist/' cannot be created in a document with origin 'null' and URL 'file:///[MyFilePath]/angular2-hn/dist/index.html'.

screen shot 2017-03-07 at 12 13 41 pm

Are you seeing the same error? Interestingly enough it works in Safari 🤔

screen shot 2017-03-07 at 12 15 19 pm

I found an issue where someone was experiencing the same thing. I asked if he did anything differently so hopefully he gets back on that. In the meantime, I'll dig around and see if I'm just missing something.

@carlok
Copy link
Author

carlok commented Mar 7, 2017

Yes I see those errors and yes, I have to use Chrome.
I investigated a bit the problem.
I used a very minimal example, to understand a bit more.
A core thing seems to be "skipLocationChange".
If you create a very basic Angular2 app (two routes, for example) in the html part turn, for example, something like <a routerLink="/bundled">Another Module</a> to <a routerLink="/bundled" skipLocationChange>Another Module</a> and, using <base href="./"> in the index.html, I am able to use the router html5 style with a plain "file://" in the browser.
The little change I made are based on https://github.com/Meligy/routing-angular-cli/
Of course this is a good step but I don't want to change every anchor in the views... a more general solution (touching the router, I suppose) might exist.

@housseindjirdeh
Copy link
Owner

housseindjirdeh commented Mar 7, 2017

Thanks for digging into this! You're right, there might be a better way to do it so will see if I can find anything as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants