Google Home에서 팟캐스트를 재생할 때 TypeError: ref.child(...).val is not a function 오류
14341 단어 FirebaseGoogleHomeNode.js
Google Home에서 좋아하는 팟캐스트를 스마트하게 재생
환경
Raspberry pi 3 ModelB
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (n/a)
Release: 9.4
Codename: n/a
$ npm -v
5.6.0
$ node -v
v9.4.0
パッケージのバージョン
[email protected]
[email protected]
[email protected]
[email protected]
기사를 참고하여 ●●.js를 만들었습니다
$ node ●●.js
를 실행하면 아래와 같은 경고가 나오고, 그대로의 상태가 된다
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
GoolgeHome에서 podcast를 흘리라고 명령하면
Firebase RealtimeDatabase
url
내용이 업데이트되지만
다음과 같은 오류가 발생합니다.
@firebase/database: FIREBASE WARNING: Exception was thrown by user callback. TypeError: ref.child(...).val is not a function
코드
위 문헌에서 인용
ref.on('child_changed', function(snapshot) {
var url = ref.child('url').val();
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
var url = ref.child('url').val();
를 다음과 같이 다시 작성하면 podcast
ref.on('child_changed', function(snapshot) {
var url = snapshot.val()
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
코드 전체
var FeedParser = require('feedparser');
var firebase = require('firebase');
var googleHome = require('google-home-notifier');
var request = require('request');
const lang = 'ja';
const ip = '192.168.xx.xx'; //再生したいGoogle HomeのIPアドレス
googleHome.ip(ip, lang);
const config = {
apiKey: 'xxxxxxx_xxxxxxxxxxxxxxxxxxxxx_xxxxxxx',
authDomain: 'xxxxxxxxxxxxxx.firebaseapp.com',
databaseURL: 'https://xxxxxxxxxxxxxx.firebaseio.com',
projectId: 'xxxxxxx',
storageBucket: 'xxxxxxx.appspot.com',
messagingSenderId: 'xxxxxxx'
};
firebase.initializeApp(config);
var db = firebase.database();
var ref = db.ref('/');
ref.on('child_changed', function(snapshot) {
var url = snapshot.val()
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
function playLatestPodcast(url) {
var req = request(url);
var parser = new FeedParser();
var items = [];
req.on('response', function(res) {
this.pipe(parser);
});
parser.on('readable', function() {
while (item = this.read()) {
items.push(item);
}
});
parser.on('end', function() {
googleHome.play(getLatestPodcastUrl(items), function(notifyRes) {});
});
}
function getLatestPodcastUrl(items) {
for (item of items) {
for (enclosure of item.enclosures) {
var url = enclosure['url'];
if (url) {
return url;
}
}
}
return "";
}
참고문헌
Google Home에서 좋아하는 팟캐스트를 스마트하게 재생
감사합니다
Reference
이 문제에 관하여(Google Home에서 팟캐스트를 재생할 때 TypeError: ref.child(...).val is not a function 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nakagawa1017/items/cdf15924086a8ece2a44
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (n/a)
Release: 9.4
Codename: n/a
$ npm -v
5.6.0
$ node -v
v9.4.0
パッケージのバージョン
[email protected]
[email protected]
[email protected]
[email protected]
$ node ●●.js
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
@firebase/database: FIREBASE WARNING: Exception was thrown by user callback. TypeError: ref.child(...).val is not a function
위 문헌에서 인용
ref.on('child_changed', function(snapshot) {
var url = ref.child('url').val();
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
var url = ref.child('url').val();
를 다음과 같이 다시 작성하면 podcast
ref.on('child_changed', function(snapshot) {
var url = snapshot.val()
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
코드 전체
var FeedParser = require('feedparser');
var firebase = require('firebase');
var googleHome = require('google-home-notifier');
var request = require('request');
const lang = 'ja';
const ip = '192.168.xx.xx'; //再生したいGoogle HomeのIPアドレス
googleHome.ip(ip, lang);
const config = {
apiKey: 'xxxxxxx_xxxxxxxxxxxxxxxxxxxxx_xxxxxxx',
authDomain: 'xxxxxxxxxxxxxx.firebaseapp.com',
databaseURL: 'https://xxxxxxxxxxxxxx.firebaseio.com',
projectId: 'xxxxxxx',
storageBucket: 'xxxxxxx.appspot.com',
messagingSenderId: 'xxxxxxx'
};
firebase.initializeApp(config);
var db = firebase.database();
var ref = db.ref('/');
ref.on('child_changed', function(snapshot) {
var url = snapshot.val()
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
function playLatestPodcast(url) {
var req = request(url);
var parser = new FeedParser();
var items = [];
req.on('response', function(res) {
this.pipe(parser);
});
parser.on('readable', function() {
while (item = this.read()) {
items.push(item);
}
});
parser.on('end', function() {
googleHome.play(getLatestPodcastUrl(items), function(notifyRes) {});
});
}
function getLatestPodcastUrl(items) {
for (item of items) {
for (enclosure of item.enclosures) {
var url = enclosure['url'];
if (url) {
return url;
}
}
}
return "";
}
참고문헌
Google Home에서 좋아하는 팟캐스트를 스마트하게 재생
감사합니다
Reference
이 문제에 관하여(Google Home에서 팟캐스트를 재생할 때 TypeError: ref.child(...).val is not a function 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nakagawa1017/items/cdf15924086a8ece2a44
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var FeedParser = require('feedparser');
var firebase = require('firebase');
var googleHome = require('google-home-notifier');
var request = require('request');
const lang = 'ja';
const ip = '192.168.xx.xx'; //再生したいGoogle HomeのIPアドレス
googleHome.ip(ip, lang);
const config = {
apiKey: 'xxxxxxx_xxxxxxxxxxxxxxxxxxxxx_xxxxxxx',
authDomain: 'xxxxxxxxxxxxxx.firebaseapp.com',
databaseURL: 'https://xxxxxxxxxxxxxx.firebaseio.com',
projectId: 'xxxxxxx',
storageBucket: 'xxxxxxx.appspot.com',
messagingSenderId: 'xxxxxxx'
};
firebase.initializeApp(config);
var db = firebase.database();
var ref = db.ref('/');
ref.on('child_changed', function(snapshot) {
var url = snapshot.val()
if (url) {
playLatestPodcast(url);
}
ref.update({'url': ''}); // 変更をリセット
});
function playLatestPodcast(url) {
var req = request(url);
var parser = new FeedParser();
var items = [];
req.on('response', function(res) {
this.pipe(parser);
});
parser.on('readable', function() {
while (item = this.read()) {
items.push(item);
}
});
parser.on('end', function() {
googleHome.play(getLatestPodcastUrl(items), function(notifyRes) {});
});
}
function getLatestPodcastUrl(items) {
for (item of items) {
for (enclosure of item.enclosures) {
var url = enclosure['url'];
if (url) {
return url;
}
}
}
return "";
}
Google Home에서 좋아하는 팟캐스트를 스마트하게 재생
감사합니다
Reference
이 문제에 관하여(Google Home에서 팟캐스트를 재생할 때 TypeError: ref.child(...).val is not a function 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nakagawa1017/items/cdf15924086a8ece2a44텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)