2014-09-22 73 views
4

我正在尝试将开发环境放在一起,并且npm正在给我带来问题。这是我的场景:我有一台运行Windows和VMWare Player的开发机器。我有一个配置了Apache,PHP,NodeJS等的Ubuntu服务器虚拟机(无UI)。由于虚拟机没有用户界面,我想使用主机操作系统进行开发。我在VM中设置了一个共享目录作为/ mnt/hgfs/source/<项目名称>。在虚拟机共享目录和咕噜声问题中安装npm模块

当我尝试在此目录中运行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目录和所有子目录拥有完全权限。

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

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

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

回答

5

尝试以下操作:

npm install --no-bin-links 

咕噜应该是本地的,因为插件和gruntfile.js可以以运行任务需要咕噜的某个版本。如果另一个开发人员想要运行你的任务,他们可以发出一个npm install并且它们已经设置好了。 (详情请见thisgrunt-cli是全球用于运行本地版本的grunt

+0

完美! '--no-bin-links'完成了这个窍门。我已经完全卖出了在本地安装模块的优点,但以前的方法是不可能的。尽管现在都很好。 – tomfumb 2014-09-23 15:15:05