3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberrypi3にgoogle-home-notifierインストールしようとしたらエラーが出まくった.

Posted at

npm install google-home-notifier
でエラーが色々出たのでその時のメモ

スタートはこんな状態でした.

root@raspberrypi:~# npm init
bash: npm: コマンドが見つかりません

対処:

sudo apt-get update
sudo apt-get install -y nodejs npm
npm cahe clean
npm install n -g
n stable

んで

root@raspberrypi:~# node -v
v9.6.1
root@raspberrypi:~# npm -v
1.4.21

なぜかnpmのversionが1.4.21のまま.何回npm install n -gやっても反映されず,というか最新版になっていることに気づかず時間費やしましたが,

.bashrcに以下を追記

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

source .bashrcしてやると反映されます.
ちなみにnpmのversionが1.4.21のままでnpm initのわけがわからずpackage.jsonが生成されていない状態で
npm install google-home-notifier
とやってしまうと,

gyp WARN EACCES attempting to reinstall using temporary dev dir "/root/node_modules/mdns/.node-gyp"
gyp WARN EACCES user "f_t" does not have permission to access the dev dir "/root/node_modules/mdns/.node-gyp/8.9.4"

の無限ループが始まってRaspberrypi自体が落ちました.
ちゃんと反映できると

root@raspberrypi:~# npm -v
5.7.1

こうなる.

  • npm init
    色んなサイト見るとpackage.json作りたいから上のコマンド打てって書いてあるんですけど,打っても
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (googlehome) 

って出てくるだけでどうして良いかわかんないですよね.jsやったことないんで特に.Press ^Cとしか書いてないからひとまず抜ければ良いのかと思ってずっと^Cってやってたし.ここはとりあえずenterキー何回か押していくのが正解みたいです.お望みのpackage.jsonファイルが出来上がります.でもエンター押し続けただけだと後々jsファイル起動した時に怒られるので,

{
  "name": "googlehome",
  "version": "1.0.0",
  "description": "google home test",
  "main": "main.js",
  "dependencies": {
    "google-home-notifier": "^1.2.0",
    "mdns": "^2.3.4"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "xxx",
  "license": "MIT",
  "repository": {
    "type": "git"
  }
}

こんな感じでdescriptionrepositoryのところを追記しておきます.

  • いよいよmain.js作成します.これは他のサイトにもよく書かれている感じで
const googlehome = require('google-home-notifier')
const language = 'ja';

googlehome.device('Google-Home', language);

googlehome.notify('こんにちは。私はグーグルホームです。', function(res) {
  console.log(res);
});

としておきます.
node main.jsと実行したら

module.js:540
    throw err;
    ^

Error: Cannot find module '../build/Release/dns_sd_bindings'
    at Function.Module._resolveFilename (module.js:538:15)
    at Function.Module._load (module.js:468:25)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/root/googlehome/node_modules/mdns/lib/dns_sd.js:32:22)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)

とでた.これはとりあえず

npm install --unsafe-perm mdns  
npm rebuild --unsafe-perm

と打てば良いらしい.んで再度実行したところ

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo -3008
    at errnoException (/root/googlehome/node_modules/mdns/lib/resolver_sequence_tasks.js:199:11)
    at getaddrinfo_complete (/root/googlehome/node_modules/mdns/lib/resolver_sequence_tasks.js:112:10)
    at GetAddrInfoReqWrap.oncomplete (/root/googlehome/node_modules/mdns/lib/resolver_sequence_tasks.js:120:9)

とでた.これはさっきのmain.js

const googlehome = require('google-home-notifier')
const language = 'ja';

googlehome.device('Google-Home', language);
googlehome.ip("192.168.xx.xxx"); //ここにgoogle homeのip追記.

googlehome.notify('こんにちは。私はグーグルホームです。', function(res) {
  console.log(res);
});

と追記すればOK.
node main.jsしたらWARNいくつか出るけどGoogleHomeが喋りだした.
でも若干口調がゆっくりで気持ち悪いわ...

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?