簡體   English   中英

節點版本管理器 (NVM) npm 將模塊安裝到公共文件夾

[英]Node Version Manager (NVM) npm installing modules to common folder

我已經使用這篇文章中的說明為 node.js 安裝了 NVM:

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

當我在節點版本之間切換然后使用 npm 安裝模塊時,所有模塊都放置在同一個“node_modules”文件夾(~/node_modules/)中,而不是特定於該版本節點的“node_modules”目錄中?

關於如何解決這個問題的任何想法?

基於來自https://github.com/creationix/nvm/pull/97的評論:

當使用全局開關 -g 使用 npm 安裝包時,包最終位於正確的目錄中(即 .nvm/$VERSION/lib/node_modules),但是 node 無法要求它,因為它不知何故沒有搜索它的前綴。

因此,使用npm install -g xxxxx會將模塊放在 NVM 的正確位置,但如果您嘗試require其中之一,則節點找不到該模塊。 我仍在玩這個,如果我找到解決方案,我會更新。

更新

NPM 把 node_modules 放在哪里? (見https://docs.npmjs.com/files/folders

  • 本地安裝(默認):將東西放在當前包根目錄的 ./node_modules 中。
  • 全局安裝(使用 -g):將東西放在 /usr/local 或安裝節點的任何地方。
  • 如果您要require()它,請在本地安裝它。
  • 如果要在命令行上運行它,請全局安裝它。
  • 如果兩者都需要,則在兩個地方都安裝它,或者使用npm link

所以我所做的是在生成 package.json 的項目根目錄中運行npm init (參見http://npmjs.org/doc/init.html )。 現在,當我運行npm install xxxxx它會在我的項目文件夾中創建一個 node_modules 目錄(我將其添加到我的 .gitignore 中)。 這適用於我在代碼中需要的模塊。

對於諸如 CoffeeScript 之類的命令,我使用npm install -g coffee-script ,它將它放在正確的目錄 (.nvm/$VERSION/lib/node_modules) 中。 雖然我不需要這些模塊(npm link 應該可以解決這個問題),但我可以運行命令 - 即coffee

我剛剛在全球范圍內安裝了 express (-g) 並且在 require("express") 時遇到了問題。 就像 Jesse Vogt 說的那樣,我剛剛重新安裝了 express,但這次沒有 -g 就像這樣:“sudo npm install express”,現在運行良好!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM