2017-07-29 104 views
0

我正在寫一些運行在節點上的Javascript,並利用node_modules中的模塊。其中一些碰巧在ES6中。nodejs v5如何讓我們使用ES6模塊?

不幸的是我瞭解到我的JS將被部署在節點v5上。所以我把它編譯成ES5的速度很快babel src-dir --out-dir out-dir

但是當然,當我在節點中運行代碼時,只要依賴關係導致node_modules中的任何ES6文件就會立即生效。

Node v6 +運行順暢,但我無法控制部署環境。

我應該如何處理 - 我是否應該考慮轉發所有節點模塊呢?這似乎很多工作。我在這裏錯過了很明顯的東西嗎

.babelrc是這樣的:

{ 
    "presets": [ 
     [ "es2015" ], 
    ], 
    "plugins": [] 
} 
+0

'node_modules'是公共的嗎?公共事物對NPM不起作用通常是不好的形式。 – loganfsmyth

+0

是所有公衆。它們都與節點v6 +一起工作,但我將部署到節點v5,並且某些模塊將不能與節點v5一起使用。 – ukosteopath

+0

你有沒有辦法讓節點6在生產中?您不需要替換舊的節點符號,可以將不同的節點運行時添加到您的服務器。 – MinusFour

回答

1

如果你依靠NPM模塊不會在你的環境中工作,只有四個選擇,我能想到的:

  1. 切換到在您自己的環境中工作的模塊,這些模塊涵蓋相同的功能。
  2. 通過修改它們解決問題的模塊在目標環境中工作
  3. 溝模塊完全和編寫必要的代碼自己
  4. 找到該模塊的早期版本(通過Github上),這是一個版本兼容v6之前的node.js。除非這是去年首次發佈的版本,否則可能會有早期版本與較早版本的node.js一起使用。

修正可能涉及修復一個或兩個錯誤,或者它可能涉及將它們自己轉換成ES5目標 - 取決於問題是什麼。

可能有2)和3)的組合,你只需從模塊中借用你需要的東西,然後修復節點v5並將其添加到項目中或在Github上分支。 NPM模塊通常是開放源代碼,可讓您「自行修復」選項。

注意:如果您精確地顯示了在節點v5下運行某個問題的確切示例,我們可以更具體地說明哪個選項可能最簡單。但是,沒有這樣的細節,我們所能做的只是描述您可以選擇的整體選項。


哦,我會錘擊雲服務,讓他們知道這個響亮而清晰。 5.x沒有來自node.js基金會的長期支持,從未做過。它不應該是一個部署版本,因爲奇數版本總是實驗性的,永遠不會獲得長期支持。 6.x是9個月前發佈的node.js的當前活動LTS(長期支持)版本。即使v4.x一直在維護,直到2018年4月。如果您的託管服務提供商只提供5.x,並且不讓您運行自己的版本或選擇受支持且更現代的版本,它們並不是一個非常優秀的節點應用託管提供商。

+0

在我的開發環境中,像rollup.js和babel.io這樣的工具組合如何將所有必需的文件(我的+模塊)轉換爲可在節點v5上工作的包?這是否要求比它的價值更多的麻煩? – ukosteopath

+0

@ukosteopath - 你還沒有告訴我們什麼是實際問題。據我所知,這些問題與API v6 +中的API更改或新功能有關,並且轉發毫無幫助。就我個人而言,我不會讓自己的代碼更加複雜而不是需要。我可能會分開處理每個模塊,而不是創建一個服務器端代碼不需要的包。 – jfriend00

+0

如果不在這裏粘貼20個冗長的文件,詳細解釋它非常棘手。 我總結盡我所能。 感謝您的建議,我將探討您提到的選項。 – ukosteopath