# Error FAQs 😢

* **No such file or directory: `requirements.txt`?**
  * Check that you are currently where `requirements.txt` exists. You'll know this is the case if enter `ls` (MacOS) or `dir` (Windows) into your terminal and you don't see `requirements.txt` or if you didn't spell it right in your command.
  * Or, you may be trying to do `pip3 install -r requirements.txt` inside of a correctly created and activated `venv`, but your `venv` is nested within a path that contains a folder that has a space in the name. Here's a good [**Stack Overflow post**](https://stackoverflow.com/questions/7911003/cant-install-via-pip-with-virtualenv) that explains the issue.
* **No module named 'flask\_sqlalchemy'?**
  * Make sure you've run `pip3 install -r requirements.txt` in your activated virtual environment, check out the **Virtual Environment** page if you need more help!
* **ImportError: cannot import name 'Feature' from 'setuptools'?**
  * Make sure that you have an updated `Markupsafe` version in your `requirements.txt` that you used to create virtual env: `MarkupSafe==1.1.1`
* **How to fix "KeyError: 'data'" from running test suite?**
  * This means that your backend didn't respond with a format like:`{ "success": True, "data": blah }` so try making sure that your endpoints match the API spec linked in the backend course.&#x20;
* **Postman keeps giving me an error?**
  * Make sure you are hitting the correct URL in Postman. A correct URL looks like this: `http://localhost:5000/api/posts/{id}/comments/`, while some examples of incorrect ones look like this: `http://localhost:5000/api/posts/{id}/comments`, `http://localhost:5000/posts/{id}/comments/`
  * If you are making a POST request, make sure that you are submitting a JSON request. `Body` > `Raw` > `JSON`
* **Postman 404 Not Found?**
  * Is your server running right now? Try checking your terminal. The server may stop when you make changes in your code has errors.
  * Also make sure that you have `if name == "main": app.run(host="0.0.0.0", port=5000, debug=True)` at the bottom of your `app.py`.
* **TypeError: list indices must be integers or slices, not str?**
  * You may be returning a list, and accessing string values of that list (could be yourself or the testing script), instead of accessing string values of a dictionary. Make sure your responses abide by the API spec which indicates list/dictionary return types.
* **JSONDecodeError?!**
  * `JSONDecodeError`s are among the most common in this course. It's caused when the testing script tries to parse the JSON data associated with a response (variable `res`) that does not have any JSON data associated with it. This occurs when your code in `app.py` encounters an uncaught exception and crashes before your crafted responses can be returned. To debug a `JSONDecodeError`, you need to look at which request is breaking on `res.json()` and look deeper into that route method in `app.py`. We then recommend using Postman to test that specific route.
  * Double check that you are using double quotes `"` when creating a POST body request.
  * Instead of accessing key values of a dictionary like `dict["key"]`, it's better to use `dict.get("key")` so that even if the POST request body doesn't contain the key, your code won't throw an error.
* **Test file's `base_path = f"{LOCAL_URL}/api/user"` has `SyntaxError`?**
  * Our testing script uses what's called an f string. This is only supported by Python 3.6 or higher, so make sure you're running `python3 test.py`.
* **Table X has no column named Y?**
  * Try using sqlite3 to help you debug in the terminal by

    1\) opening sqlite3 shell: `sqlite3`

    2\) loading your database file that you generate in your python code, which should show up in the same place as `app.py`: `.open <YOUR FILENAME HERE>.db`

    3\) seeing all the tables in your database file `.tables`

    4\) show what your table is made of (what the columns are): `PRAGMA table_info(<YOUR TABLE NAME HERE>);`


---

# 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://backend-course.cornellappdev.com/cheat-sheets/troubleshooting-errors.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.
