Please read and understand the manual
You say it works on an Arduino, a big difference between the Uno and ESP8266 is the voltage (and voltage regulators).
Another difference is the chip/architecture itself.
So that leads to having to debug these two factors.
Debug the power/circuit/voltage
Please check if the 3V pin of your particular dev board can supply the current for the 3 LED's.
Alternatively you can try by using another 5V power supply, or the 5V from your USB or (Arduino, since that did work) to try and power the LED's.
Another problem may be that the voltage will slowly go down over the length of the strip. Your strip is small, though you also power it from 3V, increasing the effect. You can try to power it on multiple points, or from the middle.
Try using a logic level shifter to increase the logic output pin from 3V to 5V, it may not be sufficient to transmit the data. This usually isn't a problem, but you should exclude this possibility.
The guide also shows some peculiar things regarding the wiring. They say you should use a capacitor between the + and - lines. I don't see how that can fail, but you may aswell try.
Also doublecheck the wiring, maybe some connector is a little loose. I've also had problems with LED strips that have been bent, the copper may come loose from the strip, or the strip may get teared a little.
You should also check with another piece of LED strip, just to be sure.
Debug the controller
It works on the Arduino, but not the ESP8266, and we have checked that it's not due to the voltages/power.
The NeoPixels have pretty strict timing, I would actually advise anyone to NOT use them. Since you can't write to the strip "pixel by pixel", you'll have to put the whole strip in memory, and then send it all at once.
Other SPI based LED strips can receive the pixels one by one, like streaming. So you can simply make a loop that sets a color and sends it (while slowling increasing color, to make an virtually infinite rainbow effect). The cool thing is that it even doesn't block interrupts from happening. (Neopixels disable interrupts, need 3 bytes per pixel, and can't do calculations between sending)
If you still want to use NeoPixels, there may be a timing issue. You can check at which clock speed you've set the ESP8266.
Also are you using ESP show with the right "is800KHz" option?
espShow(pin, pixels, numBytes, is800KHz);
You may also try another ESP8266 from another manufacturer, to be sure that it's not the board. They may have used a crystal that isn't as accurate as it should be.