\r\n\r\njavascript中で、import ~ fromでVueにコンポーネントとして登録したいので、何らかの方法をとる必要があります。\r\n調べても解決できていなく、この場合はどのようにすればよいでしょうか?\r\n\r\nご教授お願いします。\r\n\r\n``` html\r\n// js, css読込\r\n\r\n\r\n\r\n\r\n```\r\n\r\n```html\r\n
\r\n
\r\n
\r\n```\r\n\r\n```javascript\r\nimport { AgGridVue } from 'ag-grid-vue'; // ← Vue中でコンポーネントとして登録\r\n\r\nVue.createApp({\r\n name: 'myGrid',\r\n\r\n data() {\r\n return {\r\n columnDefs: null,\r\n rowData: null\r\n }\r\n },\r\n\r\n components: {\r\n AgGridVue\r\n },\r\n\r\n beforeMount() {\r\n this.columnDefs = [\r\n { headerName: 'Make', field: 'make' },\r\n { headerName: 'Model', field: 'model' },\r\n { headerName: 'Price', field: 'price' }\r\n ];\r\n\r\n this.rowData = [\r\n { make: 'Toyota', model: 'Celica', price: 35000 },\r\n { make: 'Ford', model: 'Mondeo', price: 32000 },\r\n { make: 'Porsche', model: 'Boxter', price: 72000 }\r\n ];\r\n },\r\n\r\n template: `\r\n \r\n \r\n `\r\n}).mount(\"#myGrid\");\r\n```\r\n\r\n### その他、試したこと\r\n\r\n■ javascriptのみを使用するものはag-gridの動作が確認できました。手順はURL記事のサンプルコードの通り。\r\n\r\nGet Started with ag-Grid in Your Project\r\n[https://www.ag-grid.com/javascript-grid/](https://www.ag-grid.com/javascript-grid/)\r\n\r\n※importとVueは使っていないので問題なし。\r\n\r\n### 補足情報(FW/ツールのバージョンなど)\r\nツールはVisual studio 2019 Professionalを使用","answerCount":2,"upvoteCount":0,"datePublished":"2020-11-25T02:19:52.791Z","dateModified":"2020-11-25T02:25:56.231Z","acceptedAnswer":{"@type":"Answer","text":"stack overflowで該当記事を見つけましたが、その手順で解決に至りませんでした。\r\n\r\n[https://stackoverflow.com/questions/59565934/ag-grid-with-vuejs-vanillajs](https://stackoverflow.com/questions/59565934/ag-grid-with-vuejs-vanillajs)\r\n\r\n[https://stackoverflow.com/questions/56334844/is-it-possible-to-use-ag-grid-with-vue-without-a-builder](https://stackoverflow.com/questions/56334844/is-it-possible-to-use-ag-grid-with-vue-without-a-builder)\r\n\r\nしかし、vue.js + ag-gridの時、ag-gridをvanilla jsタイプで使用しても、\r\nvue.jsの利用に影響がありませんでしたので、こちらの方で進めたいと思います。\r\n\r\nありがとうございました。","dateModified":"2020-12-07T02:55:37.320Z","datePublished":"2020-12-07T02:55:37.320Z","upvoteCount":0,"url":"https://teratail.com/questions/306278#reply-432256"},"suggestedAnswer":[{"@type":"Answer","text":"`ag-grid-community.js`はagGrid単体で使うためのもので、Vue用ではないと思われます。\r\n\r\nそして、`import { AgGridVue } from 'ag-grid-vue';`のような、npm経由で参照する形は、ブラウザには**直接処理できません**。\r\n\r\n「`ag-grid-vue`を直接ブラウザから参照できるファイルを探すなり作るなりして、それを`import`を使わない形で参照する」あるいは「npmからの`import`を処理できるよう、JavaScriptの事前処理の仕組みを作る」のどちらかの手段が必要です。","dateModified":"2020-11-25T02:35:36.573Z","datePublished":"2020-11-25T02:35:36.573Z","upvoteCount":0,"url":"https://teratail.com/questions/306278#reply-429683","comment":[{"@type":"Comment","text":"ご回答ありがとうございます。\r\n\r\n\r\nご指摘の通り、ag-grid-community.jsは、Vue用でなかったためコメントアウトしました。\r\n\r\n\r\nサンプルコードのimportははnpmから直接参照の形式だったのですね。また私の環境はWindowsでした。\r\nローカルファイルからimportを使わず、参照する場合はどのように行えばよいでしょうか?\r\nネットで検索してもimportでの例しか見つからなく、\r\n\r\nこの設定を単独で追加してみましたが、変わらずでした。\r\n\r\n\r\n\r\nまた、これはVue + ag-gridの組み合わせで通常通り使用するべきか、\r\nag-gridは単体として使用して、vueと併用とするかについても悩んでます。\r\n\r\n※やりたいこととしては、現在は、tabulatorというgridを使用しています(Vue無し)が、ag-grid + vue.jsへの移行を検討しています。\r\nGridでは直接編集で、そのの編集内容がそのまま配列オブジェクトとして記憶(tabulatorでいうとreactiveData)され、\r\nそれをjson postするようなイメージで考えています。\r\nag-grid + vue が公式ドキュメントの手順で問題なく表示され、それがreactiveDataとして使用できるか検証したいです。\r\n\r\nもしよいアドバイスがあればご教授お願いしたく。","datePublished":"2020-11-25T07:32:36.487Z","dateModified":"2020-11-25T07:39:24.761Z"},{"@type":"Comment","text":"> この設定を単独で追加してみましたが、変わらずでした。\r\n\r\nag-grid-vue.umd.jsを読み込めば、「window['ag-grid-vue']」として必要な値が取れるようです。なお、agGridとVueの本体もそれぞれ\r\n\r\n\r\n\r\nChromeのデバッグ Consoleでその読込を確認しました。\r\n\r\nWatchで window['ag-grid-vue'] を確認してみましたが、undefinedとなっています。\r\n\r\nまた、下記のエラーが発生していました。\r\n\r\nvue-class-component.esm.js:236 Uncaught TypeError: Right-hand side of 'instanceof' is not callable\r\n at componentFactory (vue-class-component.esm.js:236)\r\n at vue-class-component.esm.js:311\r\n at __decorate (tslib.es6.js:56)\r\n at AgGridVue.ts:15\r\n at Module.fae3 (AgGridVue.ts:198)\r\n at __webpack_require__ (bootstrap:19)\r\n at bootstrap:83\r\n at bootstrap:83\r\n at webpackUniversalModuleDefinition (universalModuleDefinition:9)\r\n at universalModuleDefinition:10\r\n\r\n\r\nエラーがでていない場合、undefinedでない場合は、下記の設定になるのかと考えています。\r\ncomponents: {\r\n AgGridVue: window['ag-grid-vue']\r\n},\r\n\r\nそれぞれのバージョンについて\r\nag-grid@24.1.0\r\nag-grid-vue@24.1.1\r\nvue@3.0.2\r\n\r\nimportの問題は、windowの利用で解決しそうな気はしますが、\r\nag-grid-vueの読込トラブルとなってしまい、申し訳ございません。","datePublished":"2020-11-25T07:51:35.968Z","dateModified":"2020-11-25T09:11:16.705Z"},{"@type":"Comment","text":"\r\n\r\nで、ag-grid-vue の次に distフォルダがあるため、windowで取得できないようです、\r\n解決方法を調べていますが、まだ解決できていないです。すみません。","datePublished":"2020-11-26T00:44:15.719Z","dateModified":"2020-11-26T00:44:15.719Z"},{"@type":"Comment","text":"解答欄に移動","datePublished":"2020-12-07T02:54:37.244Z","dateModified":"2020-12-07T02:55:15.535Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"Vue.jsに関する質問","url":"https://teratail.com/tags/Vue.js"},{"@type":"ListItem","position":3,"name":"Vue.js","url":"https://teratail.com/tags/Vue.js"}]}}}
質問するログイン新規登録
Vue.js

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

JavaScript

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

Q&A

解決済

2回答

5908閲覧

Vue.js 3 でjavascriptのimport ~ fromがうまくいかなくて困っています。

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

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

JavaScript

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

0グッド

0クリップ

投稿2020/11/25 02:19

編集2020/11/25 02:26

0

0

前提・実現したいこと

Vue.js 3でjavascriptのimport ~ fromがうまくいかなくて困っています。

Vue Grid | Get Started with ag-Grid and Vue
https://www.ag-grid.com/vuejs-grid/

現在、Vue.js 3とag-gridを組み合わせて、ag-gridの基本動作をさせようとしています。
手順はURL記事のサンプルコードの手順からは変更しています。(下記コードをご参照ください)
Vue.CLIは使用せず vue.global.jsを使用しています。

ただし、ここでは Vue.jsとjavascriptのimport~fromの問題のみに限定します。

現在、javascript中でimport ~ fromを使用すると、
この部分 → import { AgGridVue } from 'ag-grid-vue'; ※たぶんこれは複数ファイルのよう?
で、Uncaught SyntaxError: Cannot use import statement outside a module とエラーがでており、

import ~ fromを使用できないときは、script type="module"を使用するようですが、

<script type="module" src="..."></script>

javascript中で、import ~ fromでVueにコンポーネントとして登録したいので、何らかの方法をとる必要があります。
調べても解決できていなく、この場合はどのようにすればよいでしょうか?

ご教授お願いします。

html

1// js, css読込 2<link rel="stylesheet" href="~/lib/ag-grid/styles/ag-grid.css" /> 3<link rel="stylesheet" href="~/lib/ag-grid/styles/ag-theme-balham.css" /> 4<script src="~/lib/ag-grid/ag-grid-community.js"></script> 5<script src="~/lib/vue/vue.global.js"></script>

html

1<div id="app"> 2 <div id="myGrid" style="height: 500px; width: 500px;"></div> 3</div>

javascript

1import { AgGridVue } from 'ag-grid-vue'; // ← Vue中でコンポーネントとして登録 2 3Vue.createApp({ 4 name: 'myGrid', 5 6 data() { 7 return { 8 columnDefs: null, 9 rowData: null 10 } 11 }, 12 13 components: { 14 AgGridVue 15 }, 16 17 beforeMount() { 18 this.columnDefs = [ 19 { headerName: 'Make', field: 'make' }, 20 { headerName: 'Model', field: 'model' }, 21 { headerName: 'Price', field: 'price' } 22 ]; 23 24 this.rowData = [ 25 { make: 'Toyota', model: 'Celica', price: 35000 }, 26 { make: 'Ford', model: 'Mondeo', price: 32000 }, 27 { make: 'Porsche', model: 'Boxter', price: 72000 } 28 ]; 29 }, 30 31 template: ` 32 <ag-grid-vue style="width: 500px; height: 300px;" 33 class="ag-theme-alpine" 34 :columnDefs="columnDefs" 35 :rowData="rowData"> 36 </ag-grid-vue> 37 ` 38}).mount("#myGrid");

その他、試したこと

■ javascriptのみを使用するものはag-gridの動作が確認できました。手順はURL記事のサンプルコードの通り。

Get Started with ag-Grid in Your Project
https://www.ag-grid.com/javascript-grid/

※importとVueは使っていないので問題なし。

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

ツールはVisual studio 2019 Professionalを使用

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

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

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

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

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

guest

回答2

0

ベストアンサー

stack overflowで該当記事を見つけましたが、その手順で解決に至りませんでした。

https://stackoverflow.com/questions/59565934/ag-grid-with-vuejs-vanillajs

https://stackoverflow.com/questions/56334844/is-it-possible-to-use-ag-grid-with-vue-without-a-builder

しかし、vue.js + ag-gridの時、ag-gridをvanilla jsタイプで使用しても、
vue.jsの利用に影響がありませんでしたので、こちらの方で進めたいと思います。

ありがとうございました。

投稿2020/12/07 02:55

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ag-grid-community.jsはagGrid単体で使うためのもので、Vue用ではないと思われます。

そして、import { AgGridVue } from 'ag-grid-vue';のような、npm経由で参照する形は、ブラウザには直接処理できません

ag-grid-vueを直接ブラウザから参照できるファイルを探すなり作るなりして、それをimportを使わない形で参照する」あるいは「npmからのimportを処理できるよう、JavaScriptの事前処理の仕組みを作る」のどちらかの手段が必要です。

投稿2020/11/25 02:35

maisumakun

総合スコア146842

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

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

退会済みユーザー

退会済みユーザー

2020/11/25 07:39 編集

ご回答ありがとうございます。 ご指摘の通り、ag-grid-community.jsは、Vue用でなかったためコメントアウトしました。 <!-- <script src="~/lib/ag-grid/ag-grid-community.js"></script> --> サンプルコードのimportははnpmから直接参照の形式だったのですね。また私の環境はWindowsでした。 ローカルファイルからimportを使わず、参照する場合はどのように行えばよいでしょうか? ネットで検索してもimportでの例しか見つからなく、 この設定を単独で追加してみましたが、変わらずでした。 <script src="~/lib/ag-grid-vue/dist/ag-grid-vue.umd.js"></script> また、これはVue + ag-gridの組み合わせで通常通り使用するべきか、 ag-gridは単体として使用して、vueと併用とするかについても悩んでます。 ※やりたいこととしては、現在は、tabulatorというgridを使用しています(Vue無し)が、ag-grid + vue.jsへの移行を検討しています。 Gridでは直接編集で、そのの編集内容がそのまま配列オブジェクトとして記憶(tabulatorでいうとreactiveData)され、 それをjson postするようなイメージで考えています。 ag-grid + vue が公式ドキュメントの手順で問題なく表示され、それがreactiveDataとして使用できるか検証したいです。 もしよいアドバイスがあればご教授お願いしたく。
maisumakun

2020/11/25 07:38 編集

> この設定を単独で追加してみましたが、変わらずでした。 ag-grid-vue.umd.jsを読み込めば、「window['ag-grid-vue']」として必要な値が取れるようです。なお、agGridとVueの本体もそれぞれ<script>で読み込む必要があります(ag-grid-community.jsもコメントアウトせずに置いておいて、ag-grid-vue.umd.jsをそれより後に追加してください)。
退会済みユーザー

退会済みユーザー

2020/11/25 09:11 編集

javascriptについては、下記の順番に読込して、 <script src="~/lib/vue/vue.global.js"></script> <script src="~/lib/ag-grid/ag-grid-community.js"></script> <script src="~/lib/ag-grid-vue/dist/ag-grid-vue.umd.js"></script> Chromeのデバッグ Consoleでその読込を確認しました。 Watchで window['ag-grid-vue'] を確認してみましたが、undefinedとなっています。 また、下記のエラーが発生していました。 vue-class-component.esm.js:236 Uncaught TypeError: Right-hand side of 'instanceof' is not callable at componentFactory (vue-class-component.esm.js:236) at vue-class-component.esm.js:311 at __decorate (tslib.es6.js:56) at AgGridVue.ts:15 at Module.fae3 (AgGridVue.ts:198) at __webpack_require__ (bootstrap:19) at bootstrap:83 at bootstrap:83 at webpackUniversalModuleDefinition (universalModuleDefinition:9) at universalModuleDefinition:10 エラーがでていない場合、undefinedでない場合は、下記の設定になるのかと考えています。 components: { AgGridVue: window['ag-grid-vue'] }, それぞれのバージョンについて ag-grid@24.1.0 ag-grid-vue@24.1.1 vue@3.0.2 importの問題は、windowの利用で解決しそうな気はしますが、 ag-grid-vueの読込トラブルとなってしまい、申し訳ございません。
退会済みユーザー

退会済みユーザー

2020/11/26 00:44

<script src="~/lib/ag-grid-vue/dist/ag-grid-vue.umd.js"></script> で、ag-grid-vue の次に distフォルダがあるため、windowで取得できないようです、 解決方法を調べていますが、まだ解決できていないです。すみません。
退会済みユーザー

退会済みユーザー

2020/12/07 02:55 編集

解答欄に移動
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問