前提・実現したいこと
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_tools
を node_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.js
で foo.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
を参照し .babelrc
や babel.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}
あなたの回答
tips
プレビュー