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"
}
}
こんな感じでdescription
とrepository
のところを追記しておきます.
- いよいよ
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が喋りだした.
でも若干口調がゆっくりで気持ち悪いわ...