NPM在Windows 10主机上运行的Ubuntu中的Virtualbox共享文件夹上无法工作。

4
我试图在Virtualbox虚拟机上使用Vagrant建立开发环境。我的主机操作系统是Windows 10,客户机操作系统是ubuntu/bionic64。
我的package.json文件位于主机和客户机之间共享的目录下。但是每当我运行npm install --no-bin-links时,就会出现以下错误:
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /home/vagrant/www/wp-content/plugins/my-plugin/node_modules/array-initial/node_modules/is-number/package.json.1640612897
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/home/vagrant/www/wp-content/plugins/my-plugin/node_modules/array-initial/node_modules/is-number
/package.json.1640612897'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2021-01-19T05_31_47_272Z-debug.log

在客户机(虚拟机)内部,如果我将 package.jsonpackage-lock.json 复制到另一个非共享目录中,然后运行 npm install,一切都可以完美地运行。
mkdir /tmp/test/
cp package.json package-lock.json /tmp/test/
cd /tmp/test/ && npm install 
# NPM Packages are installed successfully!

我认为这个错误特定于Windows,因为我使用Ubuntu已经好几年了,从未遇到过类似的问题。我只在一周前开始使用Windows。

奇怪的是,我在同一台机器上还有另一个开发环境,NPM在共享文件夹上运行得非常好,没有任何问题!

我使用了--no-bin-links,所以我不认为该问题与符号链接有任何关系。

查看strace输出,我无法看到创建此文件node_modules/array-initial/node_modules/is-number /package.json.1640612897的时间。

NPM日志

Strace日志


1
我在Ubuntu 22主机和Ubuntu 18客户机上遇到了相同的问题。 - undefined
@daw 这个问题是由符号链接引起的。你可以将 packages.json 和 packages-lock.json 复制到主机内的临时目录中,然后从那里运行构建。 - undefined
是的,在普通的访客目录中可以工作,但在共享目录中运行构建的原因是要使用与主机不兼容的工具来处理共享数据...但没有成功。 - undefined
1个回答

0
你需要启用符号链接。
VBoxManage setextradata YOUR_VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER_NAME 1

然后重新启动您的虚拟机。
更多信息请参见https://www.virtualbox.org/ticket/10085#comment:12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接