2014-09-22 67 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