Description
Bug Report or Feature Request (mark with an x
)
- [x] bug report -> please search issues before submitting
- [ ] feature request
Versions.
Angular CLI: 1.6.0-beta.0
Node: 8.9.0
OS: win32 x64
Angular: 5.0.1
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, service-worker
@angular/cli: 1.6.0-beta.0
@angular-devkit/build-optimizer: 0.0.33
@angular-devkit/core: 0.0.20
@angular-devkit/schematics: 0.0.35
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.0-beta.0
@schematics/angular: 0.1.3
typescript: 2.4.2
webpack: 3.8.1
Repro steps.
ng new project --service-worker
cd project
ng build --prod --base-href=/project/
then
Publish the dist folder to a web server with a base url /project/
Ex: http://localhost/project/
The log given by the failure.
Failed to fetch ngsw-worker.js
at chrome devtools
Desired functionality.
Fetch ngsw-worker.js
at chrome devtools and service-worker works!
Mention any other details that might be useful.
At line 16 of app.module.ts
generated by cli:
environment.production ? ServiceWorkerModule.register('/ngsw-worker.js') : []
the register is starting with /
which make the fetch start from http://localhost/
If is changed to ./
it will works, but i don't test if the first request to a sub-component can confuse this solution, because the first access would be http://localhost/project/somecomponent/, and the register can try to get from http://localhost/project/somecomponent/ngsw-worker.js
My guess is that ServiceWorkerModule.register
could include the base-path by default, then it could solve this problem definitely.