質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

3213閲覧

ラズパイでGPIOの値を読み取りたい

kojikoji91

総合スコア15

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

2クリップ

投稿2017/06/06 16:38

###前提・実現したいこと
ラズパイでGPIOの値を取得したいのですが、ファイルを実行しようとすると次のようなエラーが出ました。

###発生している問題・エラーメッセージ

/home/pi/Desktop/node-gpio/node_modules/bindings/bindings.js:83 throw e ^ Error: /home/pi/Desktop/node-gpio/node_modules/epoll/build/Release/epoll.node: undefined symbol: node_module_register at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at bindings (/home/pi/Desktop/node-gpio/node_modules/bindings/bindings.js:76:44) at Object.<anonymous> (/home/pi/Desktop/node-gpio/node_modules/epoll/epoll.js:1:99) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12)

###該当のソースコード

javascript

1var express = require('express'); 2var router = express.Router(); 3 4var GPIO = require('onoff').Gpio; 5var pin = new GPIO(4, 'in'); 6 7/* GET users listing. */ 8router.get('/', function(req, res, next) { 9 console.log(pin.read()); 10 pin.unexport(); 11}); 12 13module.exports = router;

###試したこと
node.jsのバージョンを変更しようとしたが、どういったバージョンに変更すればよいかわかりません。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

※ コメントでは、書式が設定できないようなので、回答欄に書きます。

kojikoji91さん、

こちらで、もう一度、2017-04-10-raspbian-jessie.img を焼き直すところから、手順を確認しましたが、エラーが出ませんでした。

再現させないと、なんともコメントできないので、Raspbianイメージを焼いたあとからの、kojikoji91さんが実行した手順と、その出力を教えてください。

(実行例)

... nvmをインストールしたあとから... ... pi@raspberrypi:~ $ nvm install --lts && node --version Installing latest LTS version. Downloading and installing node v6.11.0... Downloading https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-armv7l.tar.xz... ######################################################################## 100.0% Computing checksum with sha256sum Checksums matched! Now using node v6.11.0 (npm v3.10.10) Creating default alias: default -> lts/ * (-> v6.11.0) v6.11.0 pi@raspberrypi:~ $ mkdir work && cd work && npm install onoff --save > epoll@0.1.21 install /home/pi/work/node_modules/epoll > node-gyp rebuild make: Entering directory '/home/pi/work/node_modules/epoll/build' CXX(target) Release/obj.target/epoll/src/epoll.o SOLINK_MODULE(target) Release/obj.target/epoll.node COPY Release/epoll.node make: Leaving directory '/home/pi/work/node_modules/epoll/build' npm WARN saveError ENOENT: no such file or directory, open '/home/pi/work/package.json' /home/pi/work └─┬ onoff@1.1.2 └─┬ epoll@0.1.21 ├── bindings@1.2.1 └── nan@2.5.1 npm WARN enoent ENOENT: no such file or directory, open '/home/pi/work/package.json' npm WARN work No description npm WARN work No repository field. npm WARN work No README data npm WARN work No license field. pi@raspberrypi:~/work $ cat <<EOF > sample.js > var GPIO = require('onoff').Gpio; > var pin = new GPIO(4, 'in'); > console.log(pin.readSync()); //read(callback) となるので、値の取得にreadSync()を使用. > EOF pi@raspberrypi:~/work $ node ./sample.js 1 pi@raspberrypi:~/work $

投稿2017/06/07 20:04

mt08

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kojikoji91

2017/06/10 19:42

OSを焼き直したところ無事解決できました。ありがとうございました。
guest

0

Raspberry Pi 2にて、以下の手順にて、nvmを使い、node v6.11.0(LTS)のインストール、
あと、上記の、"該当のソースコード"、では、動作確認できないので、
onoffパッケージのみ使用する簡単なコードで、動作を見てみました。

  1. Raspbian: 2017-04-10-raspbian-jessie.imgを焼く

  2. 起動後、パッケージアップデートなどを実行、再起動

sudo sh -c 'apt update && apt upgrade -y && apt install -y build-essential git && reboot'

  1. nvm(Node Version Manager) をインストール、再起動

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash && sudo reboot

  1. Node.js (lts = Long-term Support )をインストール(v6.11.0)

nvm install --lts && node --version

5.'onoff' パッケージの使用 (https://github.com/fivdi/onoff)

mkdir work && cd work && npm install onoff --save

#以下、こぴぺ cat <<EOF > sample.js var GPIO = require('onoff').Gpio; var pin = new GPIO(4, 'in'); console.log(pin.readSync()); //read(callback) となるので、値の取得にreadSync()を使用. EOF node ./sample.js

=> GPIO4の状態を入力として、1 または 0を表示

※ (Raspbianに、元から入ってる?) nodejs v0.10.29 だと、コンパイルエラーがでるので、
https://github.com/fivdi/onoff/wiki/Node.js-v0.10.29-and-native-addons-on-the-Raspberry-Pi の Workaround で対処しないといけないようです。

投稿2017/06/07 07:09

mt08

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kojikoji91

2017/06/07 10:33

安定版のnode.jsをインストールしましたが、コンパイルしても同じエラーが発生しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問