在虚拟机共享目录中安装 npm 模块和 grunt 问题

2023-11-25

我正在尝试构建一个开发环境,但 npm 给我带来了问题。这是我的场景:

我有一台运行 Windows 和 VMWare Player 的开发计算机。我有一个 Ubuntu Server VM(无 UI),配置了 Apache、PHP、NodeJS 等。由于 VM 没有 UI,我想使用主机操作系统进行开发。我设置了一个共享目录,在虚拟机中可以通过 /mnt/hgfs/source/ 访问该目录。

当我尝试运行时出现问题npm install在此目录中。我看到很多错误,比如Error: UNKNOWN, symlink '../requirejs/bin/r.js'。我知道我的 package.json 文件没问题,因为如果我将所有文件从共享复制到常规 unix 目录 (/var/www/)npm install工作正常。所以 npm 在共享目录中安装模块时出现问题。

我以为我可以通过全局安装节点包来解决这个问题,但是,无论出于何种原因,GruntJS 爱好者不喜欢那样并且它必须存在于本地。然后我尝试创建一个从全局到本地的 npm 链接,但这只会导致一个新错误:Error: May not delete: /usr/lib/node_modules/grunt。我对 /usr/lib/node_modules 目录和所有子目录拥有完全权限。

我真的不想在虚拟机中使用命令行文本编辑器编写整个项目,但看起来我无法通过 VMWare 将我的代码库放在主机和来宾操作系统都可用的目录中。

我非常感谢任何关于如何 1) 允许 npm 模块安装在我的共享目录中,2) 全局运行 Grunt,或 3) 解决我看到的 npm 链接错误的建议。

EDIT:发布这篇文章后不久,我意识到这里的根本问题 - 当主机操作系统是 Windows 时,不可能在 VM 共享目录中创建符号链接。由于 npm install 默认使用符号链接,因此它不起作用,这就是为什么接受的解决方案确实有效。


请尝试以下操作:

npm install --no-bin-links

Grunt 应该是本地的,因为插件和gruntfile.js可能需要特定版本的 Grunt 才能运行您的任务。如果其他开发人员想要运行您的任务,他们只需发出npm install他们已经设置好了。 (看this了解更多信息。)grunt-cli是全局的,用于运行本地版本grunt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在虚拟机共享目录中安装 npm 模块和 grunt 问题 的相关文章

随机推荐