The problem is that corporations are too large.
If a company wants to fire you over nonsense but there are 30 others in the same city who pay the same salary for the same work, they're doing you a favor. You don't want to work for a company like that anyway, when there are better alternatives.
When they're the only employer who will hire you without having to move your kids to another school district or take a salary cut by changing fields, you need them more than they need you and getting fired over nonsense is a major problem.
Make corporations smaller and more numerous and you don't need unions. This also happens to have major benefits for competition on the consumer side, so everybody wins.