簡體   English   中英

將Node.js應用程序部署到Bluemix時如何指定npm版本?

[英]How to specify npm version when deploying nodejs apps to bluemix?

我在package.json創建了一個具有范圍包的運行時依賴項的node.js應用程序:

"dependencies": {
    "@shawnzhu/mybot" : "latest",
    ...
},
"engines": {
    "npm": ">2.0.0",
    "node": "0.10.38"
},

我還有一個自定義.npmrc ,它將范圍@shawnzhu指向我的私有npm注冊表。

目前,它在部署到heroku(將npm升級到v2.7.x)時有效。 但是,將cf push送到bluemix失敗,控制台輸出顯示:

registry "@shawnzhu/mybot" not found.

在查看了整個控制台的輸出之后,我意識到它使用了npm v1.4.28,它不支持作用域軟件包。

如何在bluemix中的node.js應用程序中獲取npm v2.0.0 +?

在2015年6月15日之前 :尚無法在Bluemix上使用默認的Node.js buildpack。 現在,您可以使用社區開源Node.js buildpack:

cf push mynodeapp -b https://github.com/cloudfoundry/nodejs-buildpack

您已經在package.json中正確指定了npm版本,因此它應該適用於社區buildpack。

2015年6月15日之后 :Bluemix現已提供最新版本的IBM Node.js Buildpack! 您可以在https://developer.ibm.com/bluemix/2015/06/15/bluemix-node-js-buildpack-update/中查看完整的更改

該buildpack可以通過在package.json中包含“ npm”條目來指定NPM版本,如下所示:

"engines": {
    "npm": "xxxxxxx"
},

我還可以使用Node 0.12.2進行以下更改:

在package.json中:

  "engines": {
    "npm": ">2.0.0",
    "node": ">=0.12.0"
  },

從最新的Bluemix node.js默認構建包(2015年6月4日)開始,您可以指定npm> 2.0.0的版本,該版本將安裝npm> 2.7的版本,這是支持和導入作用域npm的要求包。 我已經針對一個公共范圍的程序包對此進行了測試,並且使用默認的node.js buildpack在Bluemix中啟動並運行了該程序包。

如果您不想還原並使用cf community buildpack,則可以使用“ engines.npm”屬性,即使在節點0.10.x中,它也可以啟動並運行。

在package.json中,指定:

 "engines": {
    "npm": ">2.0.0",
    "node": "0.10.x"
  }

為了清楚起見,我已經編輯了此答案。 非常感謝@shawnzhu的評論。 希望這可以幫助。

暫無
暫無

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

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