2017-03-21 24 views
0

如果我更新節點或程序包,它會影響我當前依賴於以前的節點/程序包版本的應用程序嗎?如果是的話,我該如何解決這個問題?也許就像一個虛擬的環境:)Node.js更新和程序包更新

+0

你說的「解決這個問題」是什麼意思?你想避免影響當前部署的應用程序嗎? –

回答

1

你應該從2個角度看待更新。 1.節點本身 2.更新NPM包

例如,有節點LTS,它在這個時候是6.1.10,然後是v7.7.3。如果您希望完全穩定,那麼請使用LTS。正如Cihan上面所說的,如果您的系統運行在舊版本上,升級Node可能是一個漫長的過程。

但是,如果你想測試已經在7.7.3中的新的async/await(異步函數)並且應該在7.8版本中正式發佈,那麼7.7.3是一個可行的方法。但請記住,有些事情可能無法正常工作,因爲你認爲他們應該或者可能會得到一些不可思議的結果。

另請注意,根據您的服務器或系統,Node更新的工作方式不同,並確保您閱讀了需要升級的特定系統的文檔。

NPM是一個不同的球賽。你依賴於許多不同的程序員或程序員羣體。該軟件包取決於他們的能力和渴望保持向後兼容性。大多數軟件包創建者對此非常好。有些不是。拿一個例子來說吧。MongoDB issued a really new driver這是從以前的一個令人難以置信的升級。新的驅動程序包含ES6並與co package一起使用,它基本上以承諾運行。

更新MongoDB的這個包對我來說很重要。但它確實保留了我以前的代碼(即使現在它可能是多餘的)

因此,當您考慮更新Node..it與更新NPM模塊不同時。但是,如果你願意,你可以去我們的項目根目錄package.json存在,只需鍵入npm更新,所有的軟件包將被更新。 You can update to only a specific version - take a look here

還記得,NPM本身也需要不時更新。

因此,在總結:

  1. 節點版本 - 決定根據需要,要求和自己的服務器哪一個。
  2. 作爲NPM的NPM也需要不時更新
  3. NPM軟件包可以不斷更新,npm update或根據上述URL更新爲特定版本號。

不令人費解,因爲它似乎首先,一旦人們得到了這一切直:)

好運

0

有可能你有一個軟件包正在被另一個軟件包使用,其中一個版本變更可能會破壞它。有幾種選擇,如果這是一個個人項目,那麼您將不得不重新安裝正確版本的軟件包,或者查看是否有可用的更新,否則破壞的軟件包。

0

它不應該,因爲npm是爲了解決這個問題:每個項目都有自己的依賴關係,並且與其他項目完全獨立。

總之,不管你改變什麼,你在你的項目做npm install,故宮將通過自身固定的依賴問題(通過檢查你的項目的package.json)

0

NPM-包有時會改變或貶低某些在新版本中功能&功能。如果更新軟件包時某些內容停止工作,則必須從更新軟件包的文檔中找出如何使其重新工作。許多軟件包可能會在控制檯中提供運行時信息/錯誤信息,這些信息/錯誤信息是關於已棄用的功能或將來版本中已標記爲棄用的功能。

npm將下載軟件包依賴關係的特定版本(因此,您通常可以在一個項目中使用某個軟件包的多個版本),因此您不必擔心要更新的軟件包的依賴關係,只關於包裝本身的變化。

某些npm-package版本僅支持某些版本的Node,因此更新節點版本可能需要更新某些軟件包。如果您切換節點版本,它也會切換npm版本,然後它將爲每個節點版本安裝正確版本的軟件包。

如果更新Node.js,某些Node.js功能可能會停止工作。在這些情況下,您必須參考Node.js文檔尋求幫助。有時將Node.js從舊版本更新到項目中的新版本是一項龐大且乏味的任務。