The biggest issue I faced personally was callback hell, it's not just for NodeJS in particular but functional JS overall. One has to resort to libraries like Async JS and understand how promises work accurately. So it has steep learning curve, you have to adopt trial and error method to learn all best practices and depend on assuming that it's perfect for production code while being unsure of tradeoffs. It becomes difficult to delineate between the code quality whether its quick fix or should really exist for production environment. IMHO, this is biggest limitation for Nodejs while building larger application with hundreds of function passing the data to each other. It becomes very difficult to resolve errors unless you are well equipped with node inspector. Personally I would choose NodeJS for limited web single page applications.
Ps: Somebody just posted on this issue while ago. Read the post here. hashnode.com/post/asyncawait-will-make-your-code-…