# DeclarationError: Undeclared identifier error when using \_setBaseURI

**URL:** <https://forum.openzeppelin.com/t/declarationerror-undeclared-identifier-error-when-using-setbaseuri/6947>\
**Category:** Contracts\
**Tags:** erc721\
**Created:** [April 10, 2021, 1:17pm UTC](https://forum.openzeppelin.com/t/declarationerror-undeclared-identifier-error-when-using-setbaseuri/6947 "2021-04-10T13:17:03Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![martriay](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/martriay/32/20_2.png) [@martriay](https://forum.openzeppelin.com/u/martriay)\
**Post date:** [April 13, 2021, 2:08am UTC](https://forum.openzeppelin.com/t/declarationerror-undeclared-identifier-error-when-using-setbaseuri/6947/2 "2021-04-13T02:08:28Z")

</div>

Hello Matteo, welcome to the forum! What version of Contracts are you using?

ERC721 comes with [`_setTokenUri`](https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#ERC721URIStorage-_setTokenURI-uint256-string-) now. Check this previous discussion:

> [@Why doesn't OpenZeppelin ERC721 contain setTokenURI?](https://forum.openzeppelin.com/t/why-doesnt-openzeppelin-erc721-contain-settokenuri/6373/2):
>
> Hi @novaknole! This was split off into a separate contract called ERC721URIStorage, because using storage in this way is expensive and we decided to make the default mechanism significantly cheaper. You may find these threads useful: [Function \_setTokenURI() in ERC721 is gone with pragma ^0.8.0](https://forum.openzeppelin.com/t/function-settokenuri-in-erc721-is-gone-with-pragma-0-8-0/5978)[OpenZeppelin Contracts 4.0 Beta](https://forum.openzeppelin.com/t/openzeppelin-contracts-4-0-beta/5878)

---

_[View the full topic](https://forum.openzeppelin.com/t/declarationerror-undeclared-identifier-error-when-using-setbaseuri/6947)._
