// Setup all the buffers and attributes (assuming you made the buffers already)
...
gl.vertexAttribPointer(a_positionLoc, positionNumComponents, gl.FLOAT, false, 0, 0);
...
gl.vertexAttribPointer(a_normalLoc, normalNumComponents, gl.FLOAT, false, 0, 0);
...
gl.vertexAttribPointer(a_texcoordLoc, texcoordNumComponents, gl.FLOAT, 0, 0);
On https://webgl2fundamentals.org/webgl/lessons/webgl-less-code-more-fun.html, one of the example
gl.vertexAttributePointer()calls, the one fora_texcoordLoc, is missing the boolean "normalized" param: