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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug(express-engine): relative URLs are not converted to absolute URLs #1669

Closed
1 of 6 tasks
KostyaTretyak opened this issue May 9, 2020 · 6 comments
Closed
1 of 6 tasks

Comments

@KostyaTretyak
Copy link

KostyaTretyak commented May 9, 2020

馃悶 Bug report

What modules are related to this issue?

  • aspnetcore-engine
  • builders
  • common
  • express-engine
  • hapi-engine
  • module-map-ngfactory-loader

Is this a regression?

I work only with current 9.1.0 version of @nguniversal/express-engine.

Description

According to the documentation, @nguniversal/express-engine should take care of converting relative URLs to absolute ones. In this example need converting /api/heroes to http://localhost:4000/api/heroes, but it doesn't seem to be happening.

馃敩 Minimal Reproduction

From first terminal:

git clone git@github.com:KostyaTretyak/example-universal-issue.git
cd example-universal-issue
yarn
yarn dev:ssr

From second terminal:

curl -isS localhost:4200/heroes

馃敟 Error

This error leads to the send() function, and if we print this._url in it, we will see relative URL.


ERROR Error: Uncaught (in promise): Error
Error
    at XMLHttpRequest.send (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:165819:19)
    at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:19023:17)
    at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
    at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
    at scheduleTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97401:32)
    at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97463:13)
    at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
    at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
    at subscribeToResult (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:162083:23)
    at MergeMapSubscriber._innerSub (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:157273:116)
    at resolvePromise (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167629:39)
    at resolvePromise (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167581:21)
    at /srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167691:21
    at ZoneDelegate../node_modules/zone.js/dist/zone-node.js.ZoneDelegate.invokeTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167218:35)
    at Object.onInvokeTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:85919:33)
    at ZoneDelegate../node_modules/zone.js/dist/zone-node.js.ZoneDelegate.invokeTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167217:40)
    at Zone../node_modules/zone.js/dist/zone-node.js.Zone.runTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:166985:51)
    at drainMicroTaskQueue (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167398:39)
    at ./node_modules/zone.js/dist/zone-node.js.ZoneTask.invokeTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167304:25)
    at Server.ZoneTask.invoke (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:167289:52) {
  rejection: NetworkError
      at XMLHttpRequest.send (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:165819:19)
      at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:19023:17)
      at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
      at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
      at scheduleTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97401:32)
      at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97463:13)
      at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
      at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
      at subscribeToResult (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:162083:23)
      at MergeMapSubscriber._innerSub (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:157273:116),
  promise: ZoneAwarePromise [Promise] {
    __zone_symbol__state: 0,
    __zone_symbol__value: NetworkError
        at XMLHttpRequest.send (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:165819:19)
        at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:19023:17)
        at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
        at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
        at scheduleTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97401:32)
        at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97463:13)
        at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
        at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
        at subscribeToResult (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:162083:23)
        at MergeMapSubscriber._innerSub (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:157273:116)
  },
  zone: Zone {
    _parent: Zone {
      _parent: null,
      _name: '',
      _properties: {},
      _zoneDelegate: [ZoneDelegate]
    },
    _name: 'angular',
    _properties: { isAngularZone: true, maybeDelayChangeDetection: false },
    _zoneDelegate: ZoneDelegate {
      _taskCounts: [Object],
      zone: [Circular],
      _parentDelegate: [ZoneDelegate],
      _forkZS: null,
      _forkDlgt: null,
      _forkCurrZone: null,
      _interceptZS: null,
      _interceptDlgt: null,
      _interceptCurrZone: null,
      _invokeZS: [Object],
      _invokeDlgt: [ZoneDelegate],
      _invokeCurrZone: [Circular],
      _handleErrorZS: [Object],
      _handleErrorDlgt: [ZoneDelegate],
      _handleErrorCurrZone: [Circular],
      _scheduleTaskZS: [Object],
      _scheduleTaskDlgt: [ZoneDelegate],
      _scheduleTaskCurrZone: [Circular],
      _invokeTaskZS: [Object],
      _invokeTaskDlgt: [ZoneDelegate],
      _invokeTaskCurrZone: [Circular],
      _cancelTaskZS: [Object],
      _cancelTaskDlgt: [ZoneDelegate],
      _cancelTaskCurrZone: [Circular],
      _hasTaskZS: [Object],
      _hasTaskDlgt: [ZoneDelegate],
      _hasTaskDlgtOwner: [Circular],
      _hasTaskCurrZone: [Circular]
    }
  },
  task: ZoneTask {
    _zone: Zone {
      _parent: [Zone],
      _name: 'angular',
      _properties: [Object],
      _zoneDelegate: [ZoneDelegate]
    },
    runCount: 0,
    _zoneDelegates: null,
    _state: 'notScheduled',
    type: 'microTask',
    source: 'Promise.then',
    data: ZoneAwarePromise [Promise] {
      __zone_symbol__state: 0,
      __zone_symbol__value: NetworkError
          at XMLHttpRequest.send (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:165819:19)
          at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:19023:17)
          at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
          at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
          at scheduleTask (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97401:32)
          at Observable._subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:97463:13)
          at Observable._trySubscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:152002:25)
          at Observable.subscribe (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:151988:22)
          at subscribeToResult (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:162083:23)
          at MergeMapSubscriber._innerSub (/srv/git/angular/test-universal-issue/dist/test-universal-issue/server/main.js:157273:116)
    },
    scheduleFn: undefined,
    cancelFn: undefined,
    callback: [Function],
    invoke: [Function]
  }
}

馃實 Environment


Angular CLI: 9.1.5
Node: 12.16.3
OS: linux x64

Angular: 9.1.6
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, platform-server
... router
Ivy Workspace: Yes

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.901.5
@angular-devkit/build-angular     0.901.5
@angular-devkit/build-optimizer   0.901.5
@angular-devkit/build-webpack     0.901.5
@angular-devkit/core              9.1.5
@angular-devkit/schematics        9.1.5
@angular/cli                      9.1.5
@ngtools/webpack                  9.1.5
@nguniversal/builders             9.1.0
@nguniversal/common               9.1.0
@nguniversal/express-engine       9.1.0
@schematics/angular               9.1.5
@schematics/update                0.901.5
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.42.0
@KostyaTretyak
Copy link
Author

If you want to check correctness of work this project without SSR:

From first terminal:

ng run test-universal-issue:server
node dist/test-universal-issue/server/main.js

From second terminal:

yarn start

Then go to the browser with http://localhost:4200/heroes

@rsboarder
Copy link

The same problem with this. Maybe you already have a workaround?

@lashford
Copy link

im experiencing the same problem, we came up with two work a rounds:

  1. Make all URLs absolute throughout the App.
  2. Create a HTTPInceptor that checks if running on the server, then if so manipulate the URL and forward on.

@alan-agius4
Copy link
Collaborator

This should have been fixed in version 10 via angular/angular#37071

@jedjebari
Copy link

Thanks @alan-agius4 that's a good news.
No fix for v9 ?

@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Jun 22, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants