acdh-oeaw / apis-oebl-research-tool-front-end

See also https://redmine.acdh.oeaw.ac.at/issues/18296
https://oebl-research.acdh-dev.oeaw.ac.at
MIT License
0 stars 0 forks source link

[bug] reference error because of circular dependencies #159

Closed stefanprobst closed 1 year ago

stefanprobst commented 1 year ago

in api/core/request.ts we currently have a "ReferenceError: can't access lexical declaration 'requestState' before initialization" which is caused by some circular dependency.

investigating with circular-dependency-plugin webpack plugin hints at one of these:

Circular dependency detected:
src/api/core/request.ts -> src/store/index.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts

Circular dependency detected:
src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/api/index.ts

Circular dependency detected:
src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/api/index.ts -> src/api/services/MeService.ts

Circular dependency detected:
src/api/services/ResearchService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/api/index.ts -> src/api/services/ResearchService.ts

Circular dependency detected:
src/api/services/WorkflowService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/api/index.ts -> src/api/services/WorkflowService.ts

Circular dependency detected:
src/service/notify/notify.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/issue.ts -> src/service/notify/notify.ts

Circular dependency detected:
src/store/author.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/author.ts

Circular dependency detected:
src/store/editor.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/editor.ts

Circular dependency detected:
src/store/index.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts

Circular dependency detected:
src/store/issue.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/issue.ts

Circular dependency detected:
src/store/label.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/label.ts

Circular dependency detected:
src/store/lemma.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/lemma.ts

Circular dependency detected:
src/store/user.ts -> src/api/index.ts -> src/api/services/MeService.ts -> src/api/core/request.ts -> src/store/index.ts -> src/store/lemma.ts -> src/store/user.ts

Circular dependency detected:
src/views/ArticleManager/Annotation.vue -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionAnnotation.ts -> src/views/ArticleManager/Annotation.vue

Circular dependency detected:
src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionAnnotation.ts -> src/views/ArticleManager/Annotation.vue -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts&

Circular dependency detected:
src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionAnnotation.ts -> src/views/ArticleManager/Annotation.vue -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts&

Circular dependency detected:
src/views/ArticleManager/CommentThread.vue -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionComment.ts -> src/views/ArticleManager/CommentThread.vue

Circular dependency detected:
src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionComment.ts -> src/views/ArticleManager/CommentThread.vue -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts&

Circular dependency detected:
src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionComment.ts -> src/views/ArticleManager/CommentThread.vue -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts&

Circular dependency detected:
src/views/ArticleManager/extensionAnnotation.ts -> src/views/ArticleManager/Annotation.vue -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/Annotation.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionAnnotation.ts

Circular dependency detected:
src/views/ArticleManager/extensionComment.ts -> src/views/ArticleManager/CommentThread.vue -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/CommentThread.vue?vue&type=script&lang=ts& -> src/views/ArticleManager/extensionComment.ts
stefanprobst commented 1 year ago

turns out, this is because we automatically sorted imports in src/App.vue with eslint - however, the app depends on a specific import order: store must be imported before requestState, i.e.:

// this will work
import store from "@/store";
import { requestState } from "@/api/core/request";

// this will *not* work
import { requestState } from "@/api/core/request";
import store from "@/store";

honestly, this is not great.