Nodejs + npm, installing modules on ntfs partition

前端 未结 7 1027
走了就别回头了
走了就别回头了 2021-01-30 06:52

I have a problem when installing npm modules. NodeJS is installed on Ubuntu 11.10 running on Virtual Box on Windows host. My project files are on NTFS partition (I have to share

相关标签:
7条回答
  • 2021-01-30 07:32

    Since version 1.2.21, npm has a new option for the install command. --no-bin-links

    You can use if for installing a specific node module

    npm install express --no-bin-links
    

    and also for a package.json install

    npm install --no-bin-links
    

    With this option I've been able to install many npm modules without problems in my shared forlder inside the VM (Ubuntu guest, Windows Host)

    The commit where the option was added to the npm code is b4c58617039c21c10889a9869f8e86a23e17d3a0

    0 讨论(0)
  • 2021-01-30 07:39

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

    this command enables symlinks on windows. for a better explanation to the cryptic commands at the end visit: How do I overcome the "The symbolic link cannot be followed because its type is disabled." error when getting the target of a symbolic link on Server 2008?

    in summary

    The behavior codes for fsutil behavior set SymlinkEvaluation - namely L2L, L2R, R2L, and R2R - mean the following:

    L stands for "Local", and R for "Remote" (who would've thunk?) The FIRST L or R - before the 2 - refers to the location of the link itself (as opposed to its target) relative to the machine ACCESSING the link. The SECOND L or R - after the 2 - refers to the location of the link's target relative to the machine where the LINK itself is located.

    0 讨论(0)
  • 2021-01-30 07:41

    The Symlink permissions, or the --no-bin-links didn't work for us. Instead we opted to move our node_modules away from the /vagrant share. We created a symlink from /vagrant/node_modules to /tmp/node_modules. You can only do this if your node_modules is not in version control. Check this first!

    Also see http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows

    0 讨论(0)
  • 2021-01-30 07:47

    Try this - http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/

    Works for me!

    Basically you set a parameter

    VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

    And then run the VM as an administrator....

    0 讨论(0)
  • 2021-01-30 07:51

    I am pretty certain symlinks can't be created on the shared drive ("shared folder"). Even more impossible with a Windows host machine and a Linux guest.

    The host machines are not aware of the filesystem of the guests. A guest machine is a blackbox for the host. You can't say to the host "Well this links to /etc/..." when the host doesn't know where this /etc is :).

    So in short: unfortunately no.


    In some more detail:

    I would be really happy if I am wrong! It is a major pain in my development process.

    I tried so many options. By default the filesystem that the "shared folders" use is vboxsf, something if not the same as samba (default network sharing protocol for windows) so:

    1. I tried using native Windows network sharing and then mounting the network drive in the guest as the guest and host are on the same network. The problem was still there.
    2. I tried running a NFS server on windows (Hanewin NFS Server) along with SFU/SUA (Windows Services for UNIX) but this has problems with GIT locks. Probably other problems as well - it was a while ago and I don't clearly remember
    3. I tried the reverse: sharing a directory on the virtual machine to windows. But that is stupid as all the files will be on the virtual box and is reaally slow to access on windows
    4. I was being stupid and I though "well let's mount a virtual drive on both windows and linux" - don't try this, corrupts the virtual disk. Something I should have known.

    There might be a network sharing protocol other than samba and nfs which will perhaps copy the files whenever "symlink" creation is attempted? I don't know really.

    However I haven't found one yet and also "locking" seems to to be a task of the file-system itself so I doubt any network protocol (unless having a dedicated registry of some sort for locks) can do this.

    0 讨论(0)
  • 2021-01-30 07:52

    If you don't use native modules (compiled from C/C++) you can just use npm on your Ubuntu VM and copy the node_modules folder to you windows drive.

    0 讨论(0)
提交回复
热议问题