Issue 1: Long path in your VM
Virtual Box defaults to a limit of ~260 characters for paths that are inside their shared folders.
So these are folders that exist on your host machine and are shared with the VM. This is a core component of Vagrant as this is the 'vagrant' folder that holds your source code or whatever.
The fix is to basically remove and re-add the shared folder with a \?\ prefix. Fortunately there is a gist here that has the full code needed for your vagrantfile.
Issue 2: npm and symlinks
Symlinks don't work in a folder shared from windows to a nix VM. This would not normally be a big deal but npm uses them a fair bit.
You can tell npm not to use symlinks by passing the --no-bin-links option. Handily you can also tell it to always use this option by editing the npm config.
Add this to your inline shell script or bootstrap.sh or whatever you are using to provision Vagrant.
npm config set bin-links false -g
Issue 3: node vs nodejs
For whatever reason on Ubuntu node is nodejs. I mean it should be nodej but everywhere else it's just node. This means that some packages that try to do post-installation tasks with node don't work.
We can use a symlink here because it is not in the shared folder. Add this to your inline shell script or bootstrap.sh or whatever you are using to provision Vagrant.
ln -s `which nodejs` /usr/bin/node