在VM共享目录中安装npm模块和grunt问题

时间:2014-09-22 22:16:23

标签: node.js gruntjs npm vmware

我试图将开发环境放在一起,而npm正在给我带来麻烦。这是我的情景:

我有一台运行Windows和VMWare Player的开发机器。我有一个配置了Apache,PHP,NodeJS等的Ubuntu Server VM(没有UI)。由于VM没有UI,我想使用主机OS进行开发。我设置了一个共享目录,在VM中将其作为/ mnt / hgfs / source /<项目名称>进行访问。

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

我以为我可以通过全局安装节点包来解决这个问题,但无论出于什么原因,GruntJS爱好者don't like that都必须在本地出现。然后我尝试创建从全局到本地的npm链接,但这只会导致新的错误:Error: May not delete: /usr/lib/node_modules/grunt。我对/ usr / lib / node_modules目录和所有子目录都有完全权限。

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

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

编辑:发布此消息后不久,我意识到了这里的根本问题 - 当主机操作系统是Windows时,无法在VM共享目录中创建符号链接。由于npm install默认使用符号链接,因此无法正常工作,这就是接受的解决方案可行的原因。

1 个答案:

答案 0 :(得分:5)

尝试以下方法:

npm install --no-bin-links

Grunt应该是本地的,因为插件和gruntfile.js可能需要某个版本的Grunt才能运行您的任务。如果其他开发人员想要运行您的任务,他们可以发出npm install并设置它们。 (有关详细信息,请参阅this。)grunt-cli是全局的,用于运行本地版本的grunt