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

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

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

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Q&A

1回答

5749閲覧

Vue.jsでUncaught TypeError: Cannot read property 'use' of undefinedが出る

nakazawa-junpei

総合スコア3

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

0グッド

0クリップ

投稿2020/10/06 00:26

前提・実現したいこと

以下のサイトを参考にして、FaceAPIとVue.jsで感情認識アプリを作成したいと考えております
https://qiita.com/hideyuki_kai/items/d36563efb3ef15997462

コードをまずはコピペで作成して、動作確認をしようとしたところ、
下記のエラーをconsoleが吐いております。
Cannot read property 'use' of undefined

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

Cannot read property 'use' of undefined

該当のソースコード

<template id="main"> <div id="app"> <canvas ref="canvas" id="emo_canvas" width="400" height="400"></canvas> <div> <video ref="video" id="video" width="400" height="400" playsinline muted autoplay></video> </div> </div> </template> <script> import Vue from 'vue' import Axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios, Axios) export default ({ template: '#main', data() { return { video: {}, canvas: {}, captures: [], testTimer: '', }; }, mounted() { //カメラを起動し、映像をvideoタグ内に表示 this.video = this.$refs.video if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { navigator.mediaDevices.getUserMedia({audio: false, video: true}) .then(stream => { this.video.srcObject = stream this.video.play() }) } console.log(this.$refs.canvas) // console.log(this.$refs.canvas) /* eslint-disable */ this.canvas = this.$refs.canvas this.testTimer = setInterval(() => { // console.log(this.$refs.canvas) let context = this.canvas.getContext("2d").drawImage(this.video, 0, 0, 400, 240) this.captures.push(this.canvas.toDataURL("image/png")) //撮った画像をcaptures配列に格納する let subscriptionKey = "951ca53d72ea41ac82f9697c50456994"; let uriBase = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect"; let params = { "returnFaceId": "true", "returnFaceLandmarks": "false", "returnFaceAttributes": "emotion" }; /* eslint-disable */ //配列最後に追加された画像のフォーマットを変換し、imgURL変数に代入する const imgURL = this.makeblob(this.captures[this.captures.length - 1]) //imgURLの画像をFaceAPIに送信 Axios.post( uriBase + "?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,emotion", imgURL, { headers: { "Content-Type": "application/octet-stream", "Ocp-Apim-Subscription-Key": subscriptionKey, } }, ) .then(response => { console.log(response.data[0].faceAttributes.emotion) }) .catch(error => { // console.log(error.response) }); }, 5000); }, methods: { makeblob: function (dataURL) { let BASE64_MARKER = ';base64,'; if (dataURL.indexOf(BASE64_MARKER) == -1) { let parts = dataURL.split(','); let contentType = parts[0].split(':')[1]; let raw = decodeURIComponent(parts[1]); return new Blob([raw], {type: contentType}); } let parts = dataURL.split(BASE64_MARKER); let contentType = parts[0].split(':')[1]; let raw = window.atob(parts[1]); let rawLength = raw.length; let uInt8Array = new Uint8Array(rawLength); for (let i = 0; i < rawLength; ++i) { uInt8Array[i] = raw.charCodeAt(i); } return new Blob([uInt8Array], {type: contentType}) } } }); </script>

試したこと

該当するソースコードに関することは一通り調べましたが一向に分からずでした

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

vuecli
canvas

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

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

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

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

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

guest

回答1

0

はじめまして。
3.xでuseは使われなくなったようです。
具体的なことは公式ドキュメントの以下の箇所にありました。
https://v3.vuejs.org/guide/migration/global-api.html#a-note-for-plugin-authors

投稿2020/10/16 16:34

tk1975

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問