As well as practice and projects what I find useful in learning a new language is getting the basics and fundamental principles absolutely right in the beginning - this should reduce (not entirely prevent !) pain in future as you step from tutorial type problem solving to real life problem solving.
So for Node.js the big idea there is its single-threaded non-blocking events model, the rest of it is Javascript. For traditional languages like C and variants, Perl, VB, etc you'd want to be very comfortable with data types, data structures, program structure, scope and (to a lesser extent) syntax.
The rest of it will come with practice, reading around, getting it badly wrong and (crucially) finding out why you got it wrong and participating in communities like this one.