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

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

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

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

Babel

Babelは、JavaScriptの次世代仕様であるECMAScriptのコンパイラ。次世代の標準機能を用いて記述されたコードを、それらの機能に対応していないブラウザでも動作するコードに変換することができます。

Vue CLI

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

Q&A

0回答

883閲覧

vue-cli のプロジェクトに外部ライブラリのクラス定数が含まれるクラスをインポートする方法について

kakuzan

総合スコア0

Vue.js

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

Babel

Babelは、JavaScriptの次世代仕様であるECMAScriptのコンパイラ。次世代の標準機能を用いて記述されたコードを、それらの機能に対応していないブラウザでも動作するコードに変換することができます。

Vue CLI

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

0グッド

0クリップ

投稿2021/09/18 10:25

編集2021/09/18 10:30

前提・実現したいこと

vue-cli で作ったプロジェクトに外部ライブラリのクラス定数が含まれるクラスをインポートして使いたいです。

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

次のようにインポートすると

js

1import { Foo } from "my_tools/components/foo.js"

次のエラーになります。

shell

1ERROR Failed to compile with 1 error 10:59:48 2 3 error in ./node_modules/my_tools/components/foo.js 4 5Module parse failed: Unexpected token (2:14) 6You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders 7| export class Foo { 8> static VAR1 = 1 9| } 10| 11 12 @ ./src/main.js 9:0-60 13 @ multi (webpack)-dev-server/client?http://10.0.1.2:3100&sockPath=/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

再現する手順

セットアップ

shell

1$ vue create my_project1 2# Default ([Vue 2] babel, eslint) を選択 3 4$ cd my_project1

ここで外部のライブラリ my_toolsnode_modules 以下に追加します。
my_tools は Nuxt のプロジェクトでそのライブラリの一部を利用したいという考えです。

shell

1$ yarn add ~/src/my_tools

node_modules/my_tools/components/foo.js に利用したいクラス Foo が入っています。

中身は次のようになっています。

js

1export class Foo { 2 static VAR1 = 1 3}

Nuxt 側ではこの Foo クラスは正常にパースできています。

次に src/main.jsfoo.js をインポートします。

js

1import Vue from 'vue' 2import App from './App.vue' 3 4// 以下を追加 5/* eslint-disable */ 6import { Foo } from "my_tools/components/foo.js" 7/* eslint-enable */ 8 9Vue.config.productionTip = false 10 11new Vue({ 12 render: h => h(App), 13}).$mount('#app')

ビルドします。

shell

1$ vue-cli-service serve

ここで static VAR1 = 1 の部分がパースできないという、上のエラーメッセージがでます。

試したこと

@babel/plugin-proposal-class-properties
https://runebook.dev/ja/docs/babel/babel-plugin-proposal-class-properties/index

を参照し .babelrcbabel.config.js にいろいろ追加したのですが、デフォルトで同じような機能が含まれているようで、無駄なことをやっているようにも思える一方で、問題のエラーは解決しないという状況です。

補足情報

環境

shell

1$ node -v 2v12.13.0 3 4$ vue -V 5@vue/cli 4.5.13 6 7$ yarn -v 81.22.11

babel.config.js の内容

js

1module.exports = { 2 presets: [ 3 '@vue/cli-plugin-babel/preset' 4 ] 5}

package.json の内容

json

1{ 2 "name": "my_project1", 3 "version": "0.1.0", 4 "private": true, 5 "scripts": { 6 "serve": "vue-cli-service serve", 7 "build": "vue-cli-service build", 8 "lint": "vue-cli-service lint" 9 }, 10 "dependencies": { 11 "core-js": "^3.6.5", 12 "my_tools": "/Users/xxx/src/my_tools", 13 "vue": "^2.6.11" 14 }, 15 "devDependencies": { 16 "@vue/cli-plugin-babel": "~4.5.0", 17 "@vue/cli-plugin-eslint": "~4.5.0", 18 "@vue/cli-service": "~4.5.0", 19 "babel-eslint": "^10.1.0", 20 "eslint": "^6.7.2", 21 "eslint-plugin-vue": "^6.2.2", 22 "vue-template-compiler": "^2.6.11" 23 }, 24 "eslintConfig": { 25 "root": true, 26 "env": { 27 "node": true 28 }, 29 "extends": [ 30 "plugin:vue/essential", 31 "eslint:recommended" 32 ], 33 "parserOptions": { 34 "parser": "babel-eslint" 35 }, 36 "rules": {} 37 }, 38 "browserslist": [ 39 "> 1%", 40 "last 2 versions", 41 "not dead" 42 ] 43}

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問