Nuxt.jsとFirebaseでwebアプリを開発しているのですが、pluginsからimportしているnode_modules内のパッケージをビルドできません。
端折ってますが大体こんな感じです
ディレクトリ構造
root │ firebase.json │ ├─ functions │ │ index.js │ │ nuxt-server.js │ │ package-lock.json │ │ package.json │ │ │ ├─ node_modules │ └─ nuxt │ ├─ public │ └─ src │ nuxt.config.js │ package-lock.json │ package.json │ ├─ node_modules ├─ pages │ └ index.vue └─ plugins └ index.js
firebase.json
json
1{ 2 "hosting": { 3 "public": "public", 4 "ignore": [ 5 "firebase.json", 6 "**/.*", 7 "**/node_modules/**" 8 ], 9 "rewrites": [ 10 { 11 "source": "**", 12 "function": "nuxtServer" 13 } 14 ] 15 } 16}
functions/index.js
javascript
1const functions = require('firebase-functions') 2 3const nuxtServer = require('./nuxt-server') 4exports.nuxtServer = functions.https.onRequest((req, res) => { 5 nuxtServer(req, res) 6})
functions/nuxt-server.js
javascript
1const { Nuxt } = require('nuxt') 2const config = { 3 dev: false, 4 buildDir: 'nuxt' 5} 6const nuxt = new Nuxt(config) 7 8module.exports = (req, res) => { 9 nuxt.renderRoute(req.path, { req }) 10 .then(result => { 11 res.send(result.html) 12 }) 13 .catch(err => { 14 console.error(err) 15 res.send(err) 16 }) 17}
src/nuxt.config.js
javascript
1export default { 2 mode: 'universal', 3 plugins: [ 4 '~/plugins/index.js' 5 ], 6 build: { 7 publicPath: '/assets/' 8 }, 9 buildDir: '../functions/nuxt' 10}
src/plugins/index.js 内で import しているパッケージが functions/nuxt にビルドされていないのか npm run dev でもnpm run start でもきちんと読み込まれるのに firebase serve だと Cannot find module と出てしまいます。
今は、 functions/node_modules に直接インストールして対処していますが、なんだかモヤモヤするしできればビルドしたいので、原因や解決方法がわかる方いたらお願いします。
ちなみに、webpackは触ったことがなくNuxt.jsを始めてビルドにwebpackが使われていることぐらいしか知りません。
あなたの回答
tips
プレビュー