Nrwl Nx Monorepo 작업 공간 종속성 그래프 오류 수정

If you are working on nx monorepo workspace and if you have notice below error and want to fix it then read this article.“Error: A project without tags cannot depend on any libraries (nx-enforce-module-boundaries)”





Nx Monorepo Workspace에서 종속성 그래프는 어떻게 작동합니까?


  • Nx는 프로젝트 태그의 인벤토리를 생성합니다.
  • 다음으로 Nx는 tslint.json 파일 내에 정의된 모든 적용 규칙을 비교합니다.
  • Nx가 tslint.json 파일 내에서 프로젝트 태그에 대한 규칙을 찾을 수 없는 경우 "태그가 없는 프로젝트는 모든 라이브러리(nx-enforce-module-boundaries)에 의존할 수 없음"오류가 발생합니다
  • .

    따라서 태그가 없는 프로젝트는 다른 프로젝트에 의존할 수 없습니다.

    앱용 프로젝트 태그는 Nx.json에 정의되어 있습니다.



    nx.json 파일에는 내 애플리케이션에 대한 프로젝트 태그가 있습니다. onlinestore-admin , onlinestore-client , onlinestore-dashboard


        "onlinestore-client": {
          "tags": ["scope:itops", "type:onlinestore-client"]
        },
        "onlinestore-admin": {
          "tags": ["scope:itops", "type:onlinestore-admin"]
        },
        "onlinestore-dashboard": {
          "tags": ["scope:itops", "type:onlinestore-dashboard"]
        },
    
    


    그러나 앱에 대한 종속성 제약 조건이 Tslint.json에 없습니다.


    tslint.json 파일 내에서 애플리케이션에 대한 종속성 제약 조건이 없음을 알 수 있습니다.

      "nx-enforce-module-boundaries": [
          true,
          {
            "enforceBuildableLibDependency": true,
            "allow": [],
            "depConstraints": [
              {
                "sourceTag": "scope:sales",
                "onlyDependOnLibsWithTags": ["scope:sales", "scope:branding"]
              },
              {
                "sourceTag": "type:sales-product-editor",
                "onlyDependOnLibsWithTags": [
                  "type:sales-product-editor",
                  "type:branding-logger",
                  "type:branding-layout",
                  "type:branding-ng-material"
                ]
              },
              {
                "sourceTag": "type:sales-products",
                "onlyDependOnLibsWithTags": [
                  "type:sales-products",
                  "type:branding-logger",
                  "type:branding-layout",
                  "type:branding-ng-material"
                ]
              },
              {
                "sourceTag": "scope:customers",
                "onlyDependOnLibsWithTags": ["scope:customers", "scope:branding"]
              },
              {
                "sourceTag": "type:customers-user-editor",
                "onlyDependOnLibsWithTags": [
                  "type:customers-user-editor",
                  "type:branding-logger",
                  "type:branding-layout",
                  "type:branding-ng-material"
                ]
              },
              {
                "sourceTag": "type:customers-users",
                "onlyDependOnLibsWithTags": [
                  "type:customers-users",
                  "type:branding-logger",
                  "type:branding-layout",
                  "type:branding-ng-material"
                ]
              },
              {
                "sourceTag": "scope:branding",
                "onlyDependOnLibsWithTags": ["scope:branding"]
              }
            ]
          }
        ],
    
    


    따라서 nx는 프로젝트에 대한 종속성 제약 조건을 찾을 수 없으므로 오류가 발생합니다.

    Nx 종속성 그래프 오류에 대한 솔루션



    2가지 옵션이 있습니다.
  • [*]를 사용하여 모든 사람이 다른 모든 프로젝트에 액세스하도록 허용할 수 있습니다. 다음을 추가하면 태그가 없는 프로젝트가 다른 모든 프로젝트에 종속될 수 있습니다.

  • {
      "sourceTag": "*",
      "onlyDependOnLibsWithTags": ["*"]
    }
    
    


    그러나 모든 프로젝트가 다른 프로젝트에 액세스하도록 허용하는 것은 권장하지 않습니다.
  • 권장 옵션은 응용 프로그램에 대한 종속성 제약 조건도 추가하는 것입니다. onlinestore-client 및 해당 종속성을 명시적으로 정의합니다.



  •  {
       "sourceTag": "type:onlinestore-client",
       "onlyDependOnLibsWithTags": [
         "type:sales-products",
         "type:customers-users",
         "type:branding-logger",
         "type:branding-layout",
         "type:branding-ng-material"
       ]
     },
     {
       "sourceTag": "type:onlinestore-admin",
       "onlyDependOnLibsWithTags": [
         "type:sales-product-editor",
         "type:customers-user-editor",
         "type:branding-logger",
         "type:branding-layout",
         "type:branding-ng-material"
       ]
     },
    
    


    나는 옵션 2를 수행했고 내 오류가 사라진 것을 알았습니다.

    결론



    이제 "태그가 없는 프로젝트는 라이브러리에 의존할 수 없습니다(nx-enforce-module-boundaries)"오류를 제거하는 방법을 배웠습니다. nx monorepo 작업 공간 내에서 종속성 경계를 설정하려면 다음 문서를 읽어보십시오. NX Monorepo: Imposing Constraints on Dependency Graph . 경계 또는 서비스 내에서 종속성을 제한하려는 경우도 있습니다. 어떻게 달성할 수 있는지 알아보려면 이 문서를 읽으십시오Enforcing Dependency Constraints Within a Service using Nx Monorepo.

    풀 스택 개발자 되기 💻



    나는 Fullstack Master에서 가르칩니다. 풀 스택 개발자가 되고 새로운 소프트웨어 개발자 또는 수석 개발자/설계자로 캐리어를 성장시키려는 경우. 전체 스택 개발 교육 프로그램에 가입하는 것을 고려하십시오. All-Access Monthly 멤버십 플랜에 등록하여 모든 비디오 코스, 슬라이드, 소스 코드 및 월간 화상 통화에 무제한으로 액세스할 수 있습니다.
  • 현재 및 미래의 Angular, node.js 및 관련 과정에 액세스하려면 All-Access Membership PRO plan을 구독하십시오.
  • PRO 플랜의 모든 것을 얻으려면 All-Access Membership ELITE plan에 가입하세요. 또한 Rupesh와의 월별 라이브 Q&A 화상 통화에 액세스할 수 있으며 의심/질문을 하고 더 많은 도움말, 팁 및 요령을 얻을 수 있습니다.

  • You bright future is waiting for you so visit todayFullstackMaster and allow me to help you to board on your dream software company as a Developer,Architect or Lead Engineer role.



    💖 나에게 👋라고 말해! Rupesh Tiwariwww.rupeshtiwari.com ✉️Email Rupesh Founder of Fullstack Master

    좋은 웹페이지 즐겨찾기