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

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

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

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

JavaScript

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

Q&A

解決済

1回答

495閲覧

Node.jsでLチカ

Fhilia

総合スコア16

Node.js

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

JavaScript

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

0グッド

0クリップ

投稿2018/11/04 04:56

前提・実現したいこと

ラズパイに入っているNode.jsからLチカをしたいのですが下記のようなことを指摘されました。どうすればこのエラーは対処できますか?

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

fs.js:646 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: EACCES: permission denied, open '/sys/class/gpio/gpio2/direction' at Object.fs.openSync (fs.js:646:18) at Object.fs.writeFileSync (fs.js:1299:33) at Object.<anonymous> (/home/pi/Node.js/led.js:9:4) at Module._compile (module.js:653:30) at Object.Module._extensions..js (module.js:664:10) at Module.load (module.js:566:32) at tryModuleLoad (module.js:506:12) at Function.Module._load (module.js:498:3) at Function.Module.runMain (module.js:694:10) at startup (bootstrap_node.js:204:16)

該当のソースコード

var fs = require('fs'); var dir = '/sys/class/gpio'; var gpio2 = dir + '/gpio2'; var count = 0; fs.writeFileSync(dir + '/export', 2); // 2ピン fs.writeFileSync(gpio2 + '/direction', 'out'); // 出力に設定 function flash() { count++; fs.writeFileSync(gpio2 + '/value', count % 2); if (count <= 20) { setTimeout(flash, 500); } else { fs.writeFileSync(dir + '/unexport', 2); // 処理の終了 } } flash();

試したこと

ファイル名はled.jsです。このファイルがあるディレクトリに移動してnode led.jsをしたところエラーメッセージが出てきました。再起動して同じことをしてみても結果はかわりませんでした。

補足情報(FW/ツールのバージョンなど)

Raspberry pi 3 model b+
OS Raspbian NOOBS
Node.js ver8.12.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

Error: EACCES: permission denied, open '/sys/class/gpio/gpio2/direction

とあるので実行ユーザーに /sys/class/gpio/gpio2/direction への書き込み権限が無いのではないでしょうか?

sudo で実行してみるとかしてみてはいかがでしょう?

投稿2018/11/05 03:14

euledge

総合スコア2404

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

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

Fhilia

2018/11/05 07:40

node led.js実行時に作られるgpio2ファイルのdirectionは回答者さんのおっしゃる通り、その他の人にはすべての権限がありませんでした。管理者で実行してみましたがnodeコマンドが見つかりませんと言われました。これはパスを通せばいいものなんですか?
euledge

2018/11/06 03:22

そうですねrootユーザーでnode使えるようにパス通すか、該当のフォルダに書き込み権限与えるかどちらかですね
Fhilia

2018/11/06 05:37

今まで解答ありがとうございました。結論から言いますと、プログラム通りにラズパイでLチカをすることができました。方法としてはパスの通し方がよくわからなかったのでrootで入って source /home/pi/.nvm/nvm.shを入力することで一応ですが光らせることに成功しました。パスの通し方をもっと調べて起動時にすぐできる状態までなんとか持っていきたいと思います。 本当にお世話になりました。
euledge

2018/11/06 07:34

nvmを使用しているのですね、もう調べているかもしれませんが、下記の記事が参考になるかもです。 [Node.js管理ツールのnvmを、システムワイドで使えるようにインストールする](http://kikuchy.hatenablog.com/entry/2013/02/14/005418)
Fhilia

2018/11/07 12:48

ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問