---
# System prepended metadata

title: Fixing Nrwl Nx Monorepo Workspace Dependency Graph Error
tags: [monorepo, webdev, nx, beginners]

---

---
layout: post
title: Fixing Nrwl Nx Monorepo Workspace Dependency Graph Error
date: 2021-03-06 00:00 +0000
subtitle: nx monorepo workspace tslint dependency error fix
description: nx monorepo workspace tslint dependency error fix
cover-img: https://i.imgur.com/NRaQUA5.png
cover_image: https://i.imgur.com/qYG3MwA.png
thumbnail-img: https://i.imgur.com/FL0LRdT.png
share-img: https://i.imgur.com/FL0LRdT.png
canonical_url: https://rupeshtiwari.github.io/2021-03-05-fixing-nrwl-nx-monorepo-dependency-graph-error/
tags: nx,monorepo,webdev,beginners
last_modified_at:
published: true
sitemap: true
comments: true
social-share: true
toc: true
excerpt_separator: "<!--more-->"

---
![](https://i.imgur.com/ymSlvgi.png)
![](https://i.imgur.com/BOUqmSS.png)


# Fixing Nrwl Nx Monorepo Workspace Dependency Graph Error

![](https://i.imgur.com/dhszeoO.jpg)
 
> If you are working on `nx monorepo workspace` and if you have notice below error and want to fix it then read this article.
> <span style="color:red;">_"Error: A project without tags cannot depend on any libraries (nx-enforce-module-boundaries)"_</span>


![](https://i.imgur.com/beHSv09.png)



## How dependency graph works in Nx Monorepo Workspace?

- Nx will create an inventory of project tags. 
- Next Nx will compare all of the enforcement rules defined inside the tslint.json file. 
- If Nx could not find any rule against a project tag inside the tslint.json file then it will throw error "A project without tags cannot depend on any libraries (nx-enforce-module-boundaries)"

Therefore, Projects without any tags cannot depend on any other projects. 

## Project Tag for Apps are defined in Nx.json

In our nx.json file we do have the project tags for my application `onlinestore-admin`, `onlinestore-client`,`onlinestore-dashboard`
 
![](https://i.imgur.com/EaXyAVW.png)

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



## However, Dependency Constraints for App is Missing in Tslint.json

Inside the `tslint.json` file you can notice we do not have dependency constraints for our applications. 
![](https://i.imgur.com/6gveNgH.png)

```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"]
          }
        ]
      }
    ],
```

So notice since nx is not able to find out any dependency constraints for the projects therefore, it is throwing error. 

## Solution to Nx Dependency Graph Error

There are 2 options. 

1. Either you can allow everyone to access every other projects by using `[*]`
If you add the following, projects without any tags will be able to depend on any other project.

```json
{
  "sourceTag": "*",
  "onlyDependOnLibsWithTags": ["*"]
}
```

However, I would never recommend allowing all project to access other projects.

2. Recommended option is to add the dependency constraints for the application as well. We will explicitly define `onlinestore-client` and its dependencies. 

![](https://i.imgur.com/Asl9W4z.png)

```json
 {
   "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"
   ]
 },

```

I did option 2 and notice my errors went away. 
![](https://i.imgur.com/OaPHQyy.png)


## Conclusion 

Now you learned how to get rid of error "A project without tags cannot depend on any libraries (nx-enforce-module-boundaries)". If you want to setup dependency boundary within your nx monorepo workspace then consider reading this article: [NX Monorepo: Imposing Constraints on Dependency Graph](https://fullstackmaster.net/detail/blog/9 ) . Sometime you also want to restrict dependencies within your boundary or service. Read this article to learn how can you achieve [Enforcing Dependency Constraints Within a Service using Nx Monorepo](https://fullstackmaster.net/detail/blog/10)

## Become full stack developer 💻

I teach at [Fullstack Master](https://www.fullstackmaster.net).  If you want to become full stack developer and grow your carrier as new software developer or Lead Developer/Architect. Consider subscribing to our full stack development training programs. You can enroll to All-Access Monthly membership plans to get unlimited access to all of our video courses, slides, source code & monthly video calls.

- Please subscribe to [All-Access Membership PRO plan](https://www.fullstackmaster.net/pro) to access current and future angular, node.js and related courses.
- Please subscribe to [All-Access Membership ELITE plan](https://www.fullstackmaster.net/elite) to get everything from PRO plan. Additionally, you will get access to monthly live Q&A video call with Rupesh and you can ask doubts/questions and get more help, tips and tricks.

> You bright future is waiting for you so visit today [FullstackMaster](www.fullstackmaster.net) and allow me to help you to board on your dream software company as a Developer,Architect or Lead Engineer role.

**💖 Say 👋 to me!**
Rupesh Tiwari
<a href="https://www.rupeshtiwari.com"> www.rupeshtiwari.com</a> 
✉️ <a href="mailto:fullstackmaster1@gmail.com?subject=Hi"> Email Rupesh</a>
Founder of <a href="https://www.fullstackmaster.net"> Fullstack Master</a>