I think you can get the LCD working.
I REALLY dislike that pinout on that esp board. It looks like the same used on the Wemos D1 R2 board.
I absolute hate that pin mapping. I think it was a really stupid thing to do as it makes things messy and confusing.
The issue is that they offset all the digital pins to skip over the TX and RX pins.
Because of this you can't use the digital pin numbers that all the other boards use to reference the same physical pin since the physical pin on that board uses a different digital pin number.
For example digital pin 0 which is normally the physical pin on the end where RX is on all other Arduino boards, is two pins over on that board.
i.e. the physical pin referenced by digital pin 0 on that board is digital pin 2 on all the other Arduino boards.
What you have to do is pick the digital pin number that maps to the physical pin that the shield expects.
So while that board doesn't have a digital pin 9 you won't need it on that board because on that board the digital pin assigned to the physical location of digital pin 9 on an aduino shield is actually digital pin 7.
This is because that board doesn't assign the digital pins in the same locations as every other Arduino board and the way the shield expects.
Just count the "Arduino way" starting with D0 where RX is and you get to the break between headers and you can see that
shield pins D8 and D9 are D6 and D7 on that board.
So while the LCD shield uses these pins:
E - digital 9
RS - digital 8
D4 - digital 4
D5 - digital 5
D6 - digital 6
D7 - digital 7
For that board you would use these pins:
E - digital 7
RS - digital 6
D4 - digital 2
D5 - digital 3
D6 - digital 4
D7 - digital 5
Now if all that were not confusing enough, there can be another issue when using the esp8266 core depending on the board variant you use and the way the board wires up and labels its pins on the board.
I'm not sure what board type you are using but if you are using one of the Wemos boards like say "Wemos D1 R2 & mini", then things can get even more tricky.
That is because those variants define Dn symbols
i.e. D0, D1, D2, etc...
And these perform pin mapping to the GPIO bit numbers.
The significance of this is that digital pin n is not the same as digital Dn
i.e. digital pin D7 is the not the same physical pin as digital pin 7
This is because raw pin numbers in the esp8266 core always represent GPIO bit numbers
However, the Dn symbols are used to map to a GPIO bit number.
Often the labels on the Wemos boards label the physical pin using the Dn symbol names and not the raw digital pin number n which would be the GPIO pin number.
When that is the case, you must use the Dn symbol and not the raw pin number n.
i.e. if it says D7 you must use that instead of 7
So depending on how that board wired up the pins and which board variant (board type) you are using
It is likely that the LiquidCrystal constructor to drive that shield with either: