首页 > 解决方案 > Angular 8.2.14 中 coreJS 的合适版本

问题描述

在 AngularJS 8.2.14 中的浏览器上证明 HTTP 请求,在 coreJS 中出现错误,其中 zone-evergreen.js

core.js:6014 ERROR HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:9898/api/v1/usermanage/users", ok: false, …}error: {error: SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.onL…, text: "[{"userId":"1ef29d3e-9119-49f2-944d-398c7c2810aa",…nt\"])","details":"uri=/api/v1/usermanage/users"}"}headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}message: "Http failure during parsing for http://localhost:9898/api/v1/usermanage/users"name: "HttpErrorResponse"ok: falsestatus: 200statusText: "OK"url: "http://localhost:9898/api/v1/usermanage/users"__proto__: HttpResponseBase
defaultErrorLogger @ core.js:6014
handleError @ core.js:6066
next @ core.js:40558
schedulerFn @ core.js:35336
__tryOrUnsub @ Subscriber.js:185
next @ Subscriber.js:124
_next @ Subscriber.js:72
next @ Subscriber.js:49
next @ Subject.js:39
emit @ core.js:35298
(anonymous) @ core.js:39738
invoke @ zone-evergreen.js:359
run @ zone-evergreen.js:124
runOutsideAngular @ core.js:39572
onHandleError @ core.js:39735
handleError @ zone-evergreen.js:363
runTask @ zone-evergreen.js:171
invokeTask @ zone-evergreen.js:465
ZoneTask.invoke @ zone-evergreen.js:454
timer @ zone-evergreen.js:2650
setTimeout (async)
scheduleTask @ zone-evergreen.js:2671
scheduleTask @ zone-evergreen.js:378
onScheduleTask @ zone-evergreen.js:272
scheduleTask @ zone-evergreen.js:372
scheduleTask @ zone-evergreen.js:211
scheduleMacroTask @ zone-evergreen.js:234
scheduleMacroTaskWithCurrentZone @ zone-evergreen.js:1107
(anonymous) @ zone-evergreen.js:2686
proto.<computed> @ zone-evergreen.js:1428
hostReportError @ hostReportError.js:2
error @ Subscriber.js:158
_error @ Subscriber.js:75
error @ Subscriber.js:55
_error @ Subscriber.js:75
error @ Subscriber.js:55
_error @ Subscriber.js:75
error @ Subscriber.js:55
notifyError @ OuterSubscriber.js:7
_error @ InnerSubscriber.js:14
error @ Subscriber.js:55
onLoad @ http.js:2477
invokeTask @ zone-evergreen.js:391
onInvokeTask @ core.js:39680
invokeTask @ zone-evergreen.js:390
runTask @ zone-evergreen.js:168
invokeTask @ zone-evergreen.js:465
invokeTask @ zone-evergreen.js:1603
globalZoneAwareCallback @ zone-evergreen.js:1640
load (async)
customScheduleGlobal @ zone-evergreen.js:1742
scheduleTask @ zone-evergreen.js:378
onScheduleTask @ zone-evergreen.js:272
scheduleTask @ zone-evergreen.js:372
scheduleTask @ zone-evergreen.js:211
scheduleEventTask @ zone-evergreen.js:237
(anonymous) @ zone-evergreen.js:1911
(anonymous) @ http.js:2569
_trySubscribe @ Observable.js:42
subscribe @ Observable.js:28
(anonymous) @ subscribeTo.js:20
subscribeToResult @ subscribeToResult.js:7
_innerSub @ mergeMap.js:59
_tryNext @ mergeMap.js:53
_next @ mergeMap.js:36
next @ Subscriber.js:49
(anonymous) @ scalar.js:4
_trySubscribe @ Observable.js:42
subscribe @ Observable.js:28
call @ mergeMap.js:21
subscribe @ Observable.js:23
call @ filter.js:13
subscribe @ Observable.js:23
call @ map.js:16
subscribe @ Observable.js:23
ngOnInit @ user.component.ts:18
checkAndUpdateDirectiveInline @ core.js:31910
checkAndUpdateNodeInline @ core.js:44367
checkAndUpdateNode @ core.js:44306
debugCheckAndUpdateNode @ core.js:45328
debugCheckDirectivesFn @ core.js:45271
eval @ UserComponent_Host.ngfactory.js? [sm]:1
debugUpdateDirectives @ core.js:45259
checkAndUpdateView @ core.js:44271
callViewAction @ core.js:44637
execEmbeddedViewsAction @ core.js:44594
checkAndUpdateView @ core.js:44272
callViewAction @ core.js:44637
execComponentViewsAction @ core.js:44565
checkAndUpdateView @ core.js:44278
callWithDebugContext @ core.js:45632
debugCheckAndUpdateView @ core.js:45194
detectChanges @ core.js:31126
tick @ core.js:41045
(anonymous) @ core.js:40893
invoke @ zone-evergreen.js:359
onInvoke @ core.js:39699
invoke @ zone-evergreen.js:358
run @ zone-evergreen.js:124
run @ core.js:39511
next @ core.js:40890
schedulerFn @ core.js:35336
__tryOrUnsub @ Subscriber.js:185
next @ Subscriber.js:124
_next @ Subscriber.js:72
next @ Subscriber.js:49
next @ Subject.js:39
emit @ core.js:35298
checkStable @ core.js:39642
onHasTask @ core.js:39719
hasTask @ zone-evergreen.js:411
_updateTaskCount @ zone-evergreen.js:431
_updateTaskCount @ zone-evergreen.js:264
runTask @ zone-evergreen.js:185
drainMicroTaskQueue @ zone-evergreen.js:559
Promise.then (async)
scheduleMicroTask @ zone-evergreen.js:542
scheduleTask @ zone-evergreen.js:381
scheduleTask @ zone-evergreen.js:211
scheduleMicroTask @ zone-evergreen.js:231
scheduleResolveOrReject @ zone-evergreen.js:845
then @ zone-evergreen.js:955
bootstrapModule @ core.js:40600
./src/main.ts @ main.ts:11
__webpack_require__ @ bootstrap:79
0 @ main.ts:12
__webpack_require__ @ bootstrap:79
checkDeferredModules @ bootstrap:45
webpackJsonpCallback @ bootstrap:32
(anonymous) @ main.js:1
Show 65 more frames

没有 JSON 结尾的例外情况如下:

"SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:40168:51)
    at ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:3747:31)
    at Object.onInvokeTask (http://localhost:4200/vendor.js:103316:33)
    at ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:3746:60)
    at Zone.runTask (http://localhost:4200/polyfills.js:3524:47)
    at ZoneTask.invokeTask [as invoke] (http://localhost:4200/polyfills.js:3821:34)
    at invokeTask (http://localhost:4200/polyfills.js:4959:14)
    at XMLHttpRequest.globalZoneAwareCallback (http://localhost:4200/polyfills.js:4996:21)"

我把我的package.json依赖项是这样的:

  "dependencies": {
    "@angular/animations": "^8.2.14",
    "@angular/cdk": "^8.2.3",
    "@angular/common": "~8.2.14",
    "@angular/compiler": "~8.2.14",
    "@angular/core": "^8.2.14",
    "@angular/forms": "~8.2.14",
    "@angular/material": "^8.2.3",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "bufferutil": "^4.0.1",
    "chokidar": "^3.4.2",
    "core-js": "^3.6.5",
    "rxjs": "~6.4.0",
    "tslib": "^1.10.0",
    "utf-8-validate": "^5.0.2",
    "zone.js": "~0.9.1"
  },

我在 Postman 中得到的响应数据如下(有一对多和多对一关系的集合):

[
  {
    "userId": "1ef29d3e-9119-49f2-944d-398c7c2810aa",
    "account": {
      "accountId": "749c88c5-9f84-403c-8de2-4458502d3c21",
      "accountName": "prueba77",
      "company": "prueba3",
      "address": "prueba3",
      "emailAddress": "prueba3",
      "dicomId": "prueba3",
      "enabled": 0,
      "users": [
        {
          "userId": "70ae0557-5fe4-4e92-876a-b0c6592d7b07",
          "account": {
            "accountId": "749c88c5-9f84-403c-8de2-4458502d3c21",
            "accountName": "prueba77",
            "company": "prueba3",
            "address": "prueba3",
            "emailAddress": "prueba3",
            "dicomId": "prueba3",
            "enabled": 0,
            "users": [
              {
                "userId": "70ae0557-5fe4-4e92-876a-b0c6592d7b07",
                "account": {
                  "accountId": "749c88c5-9f84-403c-8de2-4458502d3c21",
                  "accountName": "prueba77",
                  "company": "prueba3",
                  "address": "prueba3",
                  "emailAddress": "prueba3",
                  "dicomId": "prueba3",
                  "enabled": 0,
                  "users": [
                    {
                      "userId": "70ae0557-5fe4-4e92-876a-b0c6592d7b07",
                      "account": {
                        "accountId": "749c88c5-9f84-403c-8de2-4458502d3c21",
                        "accountName": "prueba77",
                        "company": "prueba3",
                        "address": "prueba3",
                        "emailAddress": "prueba3",
                        "dicomId": "prueba3",
                        "enabled": 0,
                        "users": [
                          {

是否有合适的 coreJS 版本来管理包含来自 DB 的数据的巨大 JSON?

标签: angularjsjwtcore-js

解决方案


我找到了解决方案,是关于一对多关系中的惰性。我更改为@Transient 并在集合中退出 Cascade 和 Lazy

Account.class

  @OneToMany (mappedBy = "account")
    @Transient
    Set<User> users = new HashSet<>();

推荐阅读