#参考対象者
- 外部ライブラリをNuxt.jsに導入したい方
- npmでプラグイン等を管理している方
#環境
{
"name": "nuxt-proj",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate"
},
"dependencies": {
"nuxt": "^2.14.0"
},
"devDependencies": {}
}
#状況
外部ライブラリのvue-flag-icon
を導入したいが、SyntaxErrorになってしまう。
SyntaxError
Cannot use import statement outside a module
#エラーにならない、プラグイン導入方法(node_modulesで管理)
- プラグインをnpmで、インストール
- pluginsディレクトリに、プラグインをimportするファイルを作成
- nuxt.config.jsファイルに、importファイルを読み込む設定をする
- サーバーの再起動
##プラグインをnpmで、インストール
まずは、今回のプラグインであるvue-flag-icon
をインストールしていきます。
$ npm i vue-flag-icon@latest
すると自動でpackage.jsonにも記述されますね。
"dependencies": {
"nuxt": "^2.14.0",
"vue-flag-icon": "^1.0.6"
},
##pluginsディレクトリに、プラグインをimportするファイルを作成
プラグイン公式(https://github.com/vikkio88/vue-flag-icon)
にもあるように、必要な記述を設定していきます。
そしてその設定は、どのファイルからでもライブラリを読み込めるように、pluginディレクトリというVue.jsをインスタンス化する前に読み込んでくれるJSファイルの置き場所に、新規ファイルでしていく。
import Vue from 'vue'; //Vueを定義するために、Vueをimport
import FlagIcon from 'vue-flag-icon';
Vue.use(FlagIcon);
##nuxt.config.jsファイルに、importファイルを読み込む設定をする
あとは、先ほど設定したimportファイルを、Nuxt.js自体の設定ファイルに読み込む記述をする。
export default {
//省略
plugins: [
'@/plugins/flag-icon',
],
//省略
}
ただ、これだけだとエラーになってしまう。
原因は、今回のライブラリの管理方法がnpmなので、さらに専用の設定が必要なため。
とは言っても、あと1行だけ追記すればいいのだが、
export default {
//省略
build: {
transpile: ['vue-flag-icon']
}
}
これにて、ライブラリが使えるようになる。
##サーバーの再起動
と、よく忘れますが、nuxt.config.js
ファイルに変更を加えた場合、サーバーの再起動をする必要があるので、
$ npm run dev
して実際に使ってみましょう!!
#実際に、使ってみる
どのVueファイルでも良いので、<flag iso="jp" />
を追加してみると、
<template>
<div>
//省略
<flag iso="jp" />
</div>
</template>
我らが日本の国旗が、表示されるであろう!
#参考
Nuxt.js公式様
https://ja.nuxtjs.org/guide/plugins/
@fj_yohei様
https://qiita.com/fj_yohei/items/cddf267a94fa30ecb0b8