LoginSignup
0
0

More than 1 year has passed since last update.

Cloud Foundry(IBM Cloud)でNode.jsのバージョン指定【.nvmrc】

Last updated at Posted at 2021-05-04

Node.jsアプリケーションをそのままデプロイしようとすると以下の警告が出ます。

**WARNING** Node version not specified in package.json or .nvmrc. See: http://docs.cloudfoundry.org/buildpacks/node/node-tips.html
          Attempting to install: 10.24.0

package.json.nvmrcに記述しろと書いてありますね。

Support .nvmrc file as an alternative to engine.version setting in package.json

前に書いた記事ではpackage.jsonのenginesに記載するやり方でしたが、今回は.nvmrcに記述します。

Cloud Foundry(IBM Cloud)でNode.jsの最新バージョンを利用する

.nvmrcを作成してデプロイ

今更ですがnvmを内部で使ってたんですね。

macなどの場合はプロジェクトのルートで以下を実行します。

$ node -v >> .nvmrc

これで.nvmrcが作成されてローカルのバージョンが.nvmrcに記載されます。

ただ最新は動かない場合が多い

先程のコマンドを実施した.nvmrcの中身はv16.0.0でした。

v16.0.0

この状態でデプロイしたら以下のエラーが発生

  **ERROR** Unable to install node: no match found for 16.0.0 in [10.23.3 10.24.0 12.20.2 12.21.0 14.15.5 14.16.0 15.11.0 15.12.0]
   2021-05-04T02:26:19.14+0900 [STG/0] ERR Failed to compile droplet: Failed to run all supply scripts: exit status 14

まぁつまりv15.12.0までしか対応してないよとのことです。

v15.12.0

と変更してデプロイしなおすとエラー回避できます。

時期によって対応状況は違うので、まずは最新版でデプロイして出たエラーメッセージにどのバージョンで対応済みかを知るのが良いかもしれません。

最新を使いたい時はbuildpacks指定の方法も

Cloud Foundry(IBM Cloud)でNode.jsの最新バージョンを利用するの記事にあるbuildpacksでURL指定などをすると最新が使えるかもしれません。

所感

package.jsonのenginesに指定していると他の環境で利用しようとした時や利用パッケージによって変な挙動が発生することがあるので、pacakge.jsonのenginesに指定よりは楽な印象です。

個人的に今後も触ることがあれば.nvmrcに記載の方を選ぶ気がします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0