Armadilloフォーラム

armadillo-IoT(G3) node.js について

yshio

2018年4月4日 15時31分

いつもお世話になっております。塩野と申します。

以下のブログを参考にさせて頂き、Armadillo-IoT(G3)でnode.jsのサンプルプログラムを動かせるようになりました。

Armadillo-IoT(G3/G3L):Node.jsを使えるようにする
https://users.atmark-techno.com/blog/615/2661

ただ、1度Armadilloの電源を切り、再起動させた後から、nodeコマンドが認識されなくなってしまいました。
ブログ中にある「nvm」コマンドは正常に認識されており、インストールしたバージョン(v8.11.1)の情報も取得できています。
何が原因なのでしょうか?

コメント

at_syunya.ohshio

2018年4月5日 15時07分

大塩です。

> ただ、1度Armadilloの電源を切り、再起動させた後から、nodeコマンドが認識されなくなってしまいました。
> ブログ中にある「nvm」コマンドは正常に認識されており、インストールしたバージョン(v8.11.1)の情報も取得できています。
> 何が原因なのでしょうか?

上記の問題は、「nvm use 」というコマンドを実行することで解決できます。
には使用するNode.jsのバージョンを指定してください。(例:nvm use v9.11.0)

Node.jsは「複数のバージョンをインストールでき、使用する前にユーザがバージョンを指定する」という仕様となっています。
この仕様から、Armadilloを再起動させると「使用するNode.jsのバージョン」がリセットされ、Node.jsのパスが消えてしまうようです。
このため、Armadillo再起動の際は「nvm use 」コマンドを使用してパスを通しなおす必要があります。

コマンドの説明は[nvm help]コマンドで確認できるため、参考にしてください。

以上です。
よろしくお願いします。

> 大塩です。
>
> > ただ、1度Armadilloの電源を切り、再起動させた後から、nodeコマンドが認識されなくなってしまいました。
> > ブログ中にある「nvm」コマンドは正常に認識されており、インストールしたバージョン(v8.11.1)の情報も取得できています。
> > 何が原因なのでしょうか?
>
> 上記の問題は、「nvm use 」というコマンドを実行することで解決できます。
> には使用するNode.jsのバージョンを指定してください。(例:nvm use v9.11.0)
>
> Node.jsは「複数のバージョンをインストールでき、使用する前にユーザがバージョンを指定する」という仕様となっています。
> この仕様から、Armadilloを再起動させると「使用するNode.jsのバージョン」がリセットされ、Node.jsのパスが消えてしまうようです。
> このため、Armadillo再起動の際は「nvm use 」コマンドを使用してパスを通しなおす必要があります。
>
> コマンドの説明は[nvm help]コマンドで確認できるため、参考にしてください。
>
> 以上です。
> よろしくお願いします。
塩野です。

毎回、バージョンを選択する必要があったのですね。
Armadilloを再起動した後、「nvm use 8.11.1」というコマンドを実行したところ、nodeコマンドが認識されました。
詳細なご回答、ありがとうございました。

at_syunya.ohshio

2018年4月5日 17時07分

大塩です。

追記します。

Armadillo再起動のたびに[nvm use ]を使用することでも実行は可能ですが、後々「事前のnvm useの入力し忘れ」「環境変数のスコープ誤り」が発生する可能性があります。
このようなミスを防ぐため、まずデフォルトの実行バージョンを設定し、それを用いて明示的にプログラムを実行する方法をお勧めします。
■デフォルトの実行バージョン設定
「nvm alias default 」コマンドを用いることで実現可能です。
このコマンドによって、defaultという変数を用いてを指定できます。
■明示的にプログラムを実行する
「nvm run [プログラム名] 」コマンドによって、Node.jpのバージョンでプログラムを実行することができます。
defaultがすでに設定されているのであれば、「nvm run default [プログラム名]」で実行可能です。

上記方法であれば、どのバージョンを使用しているか明示的でありバージョンエラーを引き起こしにくく、事前に毎回「nvm use」を使用する必要もありません。

公式のドキュメントを記載しますので、コマンドの使用方法等参考にしてください。
https://github.com/creationix/nvm#usage

またnvmは複数バージョンを管理するツールであり、もし複数バージョンを使用しないのであれば直接Node.jsをインストールするほうがよく、無理にnvmは使用する必要はないと思われます。

以上です。

> 大塩です。
>
> 追記します。
>
> Armadillo再起動のたびに[nvm use ]を使用することでも実行は可能ですが、後々「事前のnvm useの入力し忘れ」「環境変数のスコープ誤り」が発生する可能性があります。
> このようなミスを防ぐため、まずデフォルトの実行バージョンを設定し、それを用いて明示的にプログラムを実行する方法をお勧めします。
> ■デフォルトの実行バージョン設定
> 「nvm alias default 」コマンドを用いることで実現可能です。
> このコマンドによって、defaultという変数を用いてを指定できます。
> ■明示的にプログラムを実行する
> 「nvm run [プログラム名] 」コマンドによって、Node.jpのバージョンでプログラムを実行することができます。
> defaultがすでに設定されているのであれば、「nvm run default [プログラム名]」で実行可能です。
>
> 上記方法であれば、どのバージョンを使用しているか明示的でありバージョンエラーを引き起こしにくく、事前に毎回「nvm use」を使用する必要もありません。
>
> 公式のドキュメントを記載しますので、コマンドの使用方法等参考にしてください。
> https://github.com/creationix/nvm#usage
>
> またnvmは複数バージョンを管理するツールであり、もし複数バージョンを使用しないのであれば直接Node.jsをインストールするほうがよく、無理にnvmは使用する必要はないと思われます。
>
> 以上です。
塩野です。

node.jsを使用するには、nvmが必須だと思っていました。
今のところ複数のバージョンを使用する予定はないので、node.jsを直接インストールする方法を探してみたいと思います。
何度もありがとうございます。