Heat Oven: Turn oven to 350°F. Grease two 9-inch cake pans with butter or spray. Dust with flour. Set aside.
Prep Carrots: Grate fresh carrots finely. Measure nuts and coconut. Have everything ready before mixing.
Whisk Dry: In bowl, whisk flour, baking soda, baking powder, salt, cinnamon, nutmeg, ginger together well.
Mix Wet: In another bowl, whisk oil, white sugar, brown sugar together. Add eggs one at a time and whisk well. Add vanilla and crushed pineapple with juice.
Combine: Pour wet into dry. Stir gently until just mixed. Don't overmix. Fold in carrots, walnuts, and coconut.
Fill Pans: Divide batter between pans evenly. Smooth tops gently.
Bake: Bake 35-40 minutes until toothpick in center comes out with few moist crumbs. Don't overbake.
Cool: Let sit in pans 15 minutes. Turn out onto cooling racks. Cool completely before frosting.
Make Frosting: Beat cream cheese and butter until fluffy. Gradually add powdered sugar while beating. Add vanilla. Beat until smooth.
Frost First Layer: Place one cake on serving plate. Spread frosting on top.
Stack: Place second layer on top of frosted first layer. Press gently.
Frost All: Frost top and sides of cake. Make it smooth or swirly however you want.
Top: Optional - sprinkle crushed walnuts or carrot shavings on top if you want it fancy.
Chill: Refrigerate until ready to serve. Tastes better the next day.