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

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

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

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

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Vue CLI

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JavaScript

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

Q&A

0回答

354閲覧

vue cliでnpmのプラグインのインポート方法がわかりません。

nulll

総合スコア14

Vue.js

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

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Vue CLI

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JavaScript

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

0グッド

0クリップ

投稿2022/08/10 03:10

編集2022/08/10 03:11

前提

この記事を参考にvue cliを使い、このnpmのプラグインをインポートしようとしましたができませんでした。

該当のソースコード

main.js

1import leader from 'leader-line' 2console.log(leader)

コンソールの結果は以下の通り空でした。

main.js?fbea:13 Object[[Prototype]]: Object

package.jsにはそのプラグインはインストールされています。

package.json

1 "devDependencies": { 2 "@babel/core": "^7.12.16", 3 "@babel/eslint-parser": "^7.12.16", 4 "@vue/cli-plugin-babel": "~5.0.0", 5 "@vue/cli-plugin-eslint": "~5.0.0", 6 "@vue/cli-service": "~5.0.0", 7 "eslint": "^7.32.0", 8 "eslint-plugin-vue": "^8.0.3", 9 "leader-line": "^1.0.7", // インストールされている 10 "vue-template-compiler": "^2.6.14" 11 },

試したこと

app.vueからimportして読み込もうと思いましたが、できませんでした。

app.vue

1<template> 2 <div id="search-ip"> 3 <div> 4 <div> 5 <input @click="getIp" type="button" value="IPを取得" /> 6 7 <div id="start">start</div> 8 <div id="end">end</div> 9 </div> 10 </div> 11 </div> 12</template> 13 14<script> 15import LeaderLine from 'leader'; 16 17export default { 18 name: "SearchIp", 19 methods: { 20 getIp() { 21 this.axios 22 .get("https://httpbin.org/get") 23 .then((response) => { 24 alert(response.data.origin); 25 }) 26 .catch((e) => { 27 alert(e); 28 }); 29 }, 30 }, 31 mounted: function () { 32 new LeaderLine( 33 document.getElementById("start"), 34 document.getElementById("end"), 35 ); 36 }, 37}; 38</script>

エラー文

vue.runtime.esm.js?c320:4560 [Vue warn]: Error in mounted hook: "TypeError: leader_line__WEBPACK_IMPORTED_MODULE_0___default(...) is not a constructor" found in ---> <SearchIp> at src/App.vue <Root> warn @ vue.runtime.esm.js?c320:4560 logError @ vue.runtime.esm.js?c320:3016 globalHandleError @ vue.runtime.esm.js?c320:3012 handleError @ vue.runtime.esm.js?c320:2979 invokeWithErrorHandling @ vue.runtime.esm.js?c320:2995 callHook$1 @ vue.runtime.esm.js?c320:3987 insert @ vue.runtime.esm.js?c320:4378 invokeInsertHook @ vue.runtime.esm.js?c320:6883 patch @ vue.runtime.esm.js?c320:7094 Vue._update @ vue.runtime.esm.js?c320:3726 updateComponent @ vue.runtime.esm.js?c320:3831 Watcher.get @ vue.runtime.esm.js?c320:3407 Watcher @ vue.runtime.esm.js?c320:3397 mountComponent @ vue.runtime.esm.js?c320:3848 Vue.$mount @ vue.runtime.esm.js?c320:8704 eval @ main.js?fbea:17 ./src/main.js @ app.js:75 __webpack_require__ @ app.js:104 (anonymous) @ app.js:1249 __webpack_require__.O @ app.js:158 (anonymous) @ app.js:1250 (anonymous) @ app.js:1252 vue.runtime.esm.js?c320:3020 TypeError: leader_line__WEBPACK_IMPORTED_MODULE_0___default(...) is not a constructor at VueComponent.mounted (App.vue?11c4:32:1) at invokeWithErrorHandling (vue.runtime.esm.js?c320:2988:1) at callHook$1 (vue.runtime.esm.js?c320:3987:1) at Object.insert (vue.runtime.esm.js?c320:4378:1) at invokeInsertHook (vue.runtime.esm.js?c320:6883:1) at Vue.patch [as __patch__] (vue.runtime.esm.js?c320:7094:1) at Vue._update (vue.runtime.esm.js?c320:3726:1) at Vue.updateComponent (vue.runtime.esm.js?c320:3831:1) at Watcher.get (vue.runtime.esm.js?c320:3407:1) at new Watcher (vue.runtime.esm.js?c320:3397:1)

以下の記事を見つけましたが、vue3用でした。
https://reffect.co.jp/vue/vue-plugin

ドキュメントのプラグインのページを見ましたが、npmでインストールしたものの導入方法はわかりませんでした。
https://jp.vuejs.org/v2/guide/plugins.html

以下の記事を参考にvue.useは必要ないと判断しました。
https://qiita.com/fuqda/items/90073e3cd0987c82553d

ここにより詳細な情報を記載してください。

"vue": "^2.6.14",
"@vue/cli-service": "~5.0.0",

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

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

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

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

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

nulll

2022/08/10 06:48

axiosで試したところapp.vueにimportしただけで、うまくいきました。 なぜこのプラグインでは失敗するのでしょうか。 ```App.vue <template> <div id="search-ip"> <div> <div> <div id="start">start</div> <div id="end">end</div> </div> </div> </div> </template> <script> import axios from 'axios' export default { name: "SearchIp", methods: { }, mounted: function () { // new LeaderLine( // document.getElementById("start"), // document.getElementById("end"), // ); console.log(axios) const url = axios.get("http://localhost:8080/") console.log(url) }, }; </script> ``` ```出力 romise {<pending>} [[Prototype]]: Promise [[PromiseState]]: "fulfilled" [[PromiseResult]]: Object config: {transitional: {…}, transformRequest: Array(1), transformResponse: Array(1), timeout: 0, adapter: ƒ, …} data: "<!DOCTYPE html>\n<html lang=\"\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n <link rel=\"icon\" href=\"/favicon.ico\">\n <title>hello</title>\n <script defer src=\"/js/chunk-vendors.js\"></script><script defer src=\"/js/app.js\"></script></head>\n <body>\n <noscript>\n <strong>We're sorry but hello doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>\n </noscript>\n <div id=\"app\"></div>\n <!-- built files will be auto injected -->\n </body>\n</html>\n" headers: {accept-ranges: 'bytes', content-length: '621', content-type: 'text/html; charset=utf-8', date: 'Wed, 10 Aug 2022 06:42:55 GMT', etag: 'W/"26d-obr8Oyd4+jyFUq1IlZmxjp1STvA"', …} request: XMLHttpRequest {onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, …} status: 200 statusText: "OK" [[Prototype]]: Object ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問