# Handling Import Errors in Slither: A Guide on Solc Remappings

{% hint style="info" %}
[**Book an audit with Zokyo**](https://www.zokyo.io/)
{% endhint %}

### **Introduction**

While using Slither for static analysis of Solidity contracts, one common issue that users might face is related to the importing of external dependencies or libraries such as OpenZeppelin. This tutorial aims to guide you through resolving such errors, particularly when Slither can’t find your imported files. Here, we will focus on the use of `--solc-remaps` to solve this problem.

### **Understanding the Error**

#### **Error Description:**

`Error: Source "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol" not found: File not found.`

#### **Error Analysis:**

This error occurs when the Solidity compiler (`solc`) can't locate the imported dependencies in the specified paths. In the context of the error above, the compiler is unable to find the ERC721Enumerable.sol file in the OpenZeppelin contracts library.

### **Understanding solc-remaps**

`solc-remaps` is an option that allows us to redirect the compiler to the correct directory where the dependencies are located. It essentially creates a mapping between the logical import paths used in the code and the actual physical location of the dependency files on the disk.

### **Tutorial Steps: Using solc-remaps to Resolve Import Errors**

#### **Step 1: Identifying the Error**

When you run Slither, identify the import errors, which typically indicate the logical paths where dependencies couldn’t be found.

#### **Step 2: Locating Dependencies**

Locate where the dependencies like OpenZeppelin contracts are installed in your project. You might find them in the `node_modules` directory if you are using Node.js.

#### **Step 3: Using solc-remaps Option in Slither**

1. Use the `--solc-remaps` option followed by the mapping between the logical import path and the actual physical location.

   ```bash
   slither <your-contract.sol> --solc-remaps "@openzeppelin/=C:/Users/Omar/Desktop/InternshipTask/internship-tasks/node_modules/@openzeppelin/"
   ```

   * `@openzeppelin/` is the logical path used in the import statement.
   * `C:/Users/Omar/Desktop/InternshipTask/internship-tasks/node_modules/@openzeppelin/` is the actual location where the OpenZeppelin contracts are installed.
2. Run the command, and Slither should now be able to locate the dependencies and run the analysis without import errors.

### **Conclusion**

Understanding and using `solc-remaps` is crucial for handling import errors in Slither when dealing with external dependencies. By redirecting the Solidity compiler to the correct directories, we ensure that the code analysis proceeds smoothly without interruptions due to missing dependencies. Always ensure that your mappings correctly align with the physical locations of the libraries and contracts to avoid such errors during the static analysis process.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zokyo-auditing-tutorials.gitbook.io/zokyo-automated-tools/mastering-slither-a-comprehensive-guide-to-smart-contract-vulnerability-detection/analyzing-smart-contracts-locally-with-slither/handling-import-errors-in-slither-a-guide-on-solc-remappings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
