angular-cli: using deploy-url and base-href yields in wrong assets path

Bug Report or Feature Request (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request

Versions.

@angular/cli: 1.1.1 node: 8.1.1 os: darwin x64

Repro steps.

create a new application and use a --base-href=/ui/ and --deploy-url=/ui/ while having a stylesheet of:

.login-body {
  background: rgba(0, 0, 0, 0) url("/assets/images/bg.png") no-repeat scroll 0 0 / cover;
}

The output will then be .login-body{background:transparent url(/ui/ui/assets/images/bg.png) no-repeat scroll 0 0/cover} in both, build --prod --deploy-url=/ui/ --base-href=/ui/ and on serve --deploy-url=/ui/ --base-href=/ui/

Mention any other details that might be useful.

Actually if I remove one of the things either base-href and deploy-url it would work, however if I omit base-href routing will actually re-initialize the application everytime I open a [href] or ng-href link (hybrid app). if I omit deploy-url i will get 404 well I might make it work without deploy-url since I proxy the ng serve in my application and I can strip the path, but I still think that setting both shouldn’t end in a assets path of /ui/ui/. What’s even more strange is that the $icon-font-path and $fa-font-path of font-awesome and boostrap are working correctly and don’t double add a /ui/

Basically I think that without --deploy-url I can fully use my application since angular-cli omits relative url’s so the script path is ui/.... However it would’ve been great to use absolute-urls for everything which I can enforce with --deploy-url.

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 7
  • Comments: 16 (3 by maintainers)

Commits related to this issue

Most upvoted comments

Is this is still not solved? I’m using angular cli 6.2.3, ng build with the base-href. For example ng build --c prod --base-href /app/. Problem is IIS tries to look for assets in the the root folder not in the app folder specified. It should be here /myserver/app/assets/. But it tries to find stuff in /myserver/assets/. So it obviously fails. This is more than just a little annoying, Google??

@filipesilva i am still having this issue with ng build --base-href /test/ --deploy-url /test/. When i deploy to the server, assets path is falling back to root of the server and failing lo load.

I followed the reference #6320 you have given, still having the same issue

<img src="./assets/logo.svg"> Worked for me thx @manbearwiz

Guys, this is important for us. You built an app, you deploy it and you can’t show it to a client because of this! The app seem completely broken to a client!

I just had the exact problem as described by @schmitch. Instead of url(“/assets/images/bg.png”), try to use the …/ so something like url(“…/…/…/assets/images/bg.png”) depending on however many directories up the assets folder is.

In response to @clydin: I don’t experience what you describe with --base-href and --deploy-url. If I just use --base-href by itself then none of my js resources get loaded up because they’re trying to be loaded from / instead of /ui/

Changing to relative paths fixed this for me when doing a prod build with a specified --base-href. For example changing:

<img src="/assets/logo.svg">

to

<img src="./assets/logo.svg">

We are having the same problem with --base-href and --deploy-url prepending the service prefix twice on image URL’s in the /assets folder. 😢