Making the eyes children of the character mesh as an Object (which is what it sounds like you did) means that they move only within the local space of the mesh Object. The mesh itself, under Armature control, has its vertices moving in the Armature’s local space – the two “spaces” don’t always coincide, as you’ve discovered.
The solution is to put your eyes under control of the Armature as well, so they and the rest of the character mesh share a common space for transforms. Multiple objects/meshes can be linked to the same Armature, so riggers usually build eye controls into the same Armature as that controlling the rest of the mesh. The rigging can be with bones that are part of the same rig as the body, or can be a separate armature that is a child of one of the main armature’s bones (frequently the head/skull bone).
The main point is to insure that the Armature controls the transforms the eyes go through, rather than the mesh Object.