Why don't we solve vanishing/exploding gradients problem just by normalizing the gradients? For example, suppose after a mini-batch, we calculated the gradient is [0.00003, 0.00001, 0.0000006], whice is too small, gradient is vanishing.
Why don't we solve this problem just by dividing the calculated gradient by its L2 norm? I think knowing the direction of the gradient is enough, we do not care its magnitude, we can normalize its magnitude. Where am I wrong?
 A: Normalising gradients results in effectively increasing the learning rate based on gradient norm which will almost certainly lead to overstepping local and global minima, leading the network to not learn anything useful.
Instead of normalising the gradients you can instead normalise the weight matrix of each hidden unit post gradient update at each step. This explicitly prevents dying or exploding gradients by enforcing the signal energy remains at a relatively normalised level as it propagates forwards and backwards.
Combining weight normalisation with a technique like L1 regularisation will force the weight matrix to maximise important connections while minimising irrelevant ones.

Edit: additional clarification of effects of normalised gradients
To illustrate mathematically what happens I'll take a simpler example of stochastic gradient descent for a linear model. Given gradients $g_t$, learning rate $\alpha$ and model parameters $\theta_t$ the update rule is as follows:
$$\theta_{t+1} = \theta_t - \alpha g_t$$
Now, if we normalised the gradients our update rule would be written as:
$$\theta_{t+1} = \theta_t - \frac{\alpha}{||g_t||} g_t$$
So we are effectively modifying the learning rate by the norm of the gradients. When the gradients are small $||g_t||<1$ and as such the learning rate will be increased. Increasing the learning rate can result in overstepping minima, as illustrated by this diagram:

Equally, if the gradients are large $||g_t||>1$ and as such the learning rate will decrease, and as shown in the diagram it will converge slowly and may never reach minima in reasonable time.
A: We use the gradient to know exactly how much to adjust our parameters. So I believe that if you normalised the vanishing gradient you would overshoot the optimal values and likely end up with worse estimates. But I could be wrong, I haven't touched this for a while
