简体   繁体   中英

Firebase-Admin with Nuxt

I am trying to consume a Firestore database with Nuxt. But the following code generates an error when compiling. I leave several excerpts from the project I'm doing

In this file I have configured the database credentials path

README.md

$env:GOOGLE_APPLICATION_CREDENTIALS="D:\Educacion\Proyectos\Go\social\whatsapp-f91a0.json"

nuxt.config.js

plugins: [
    '@plugins/firebase.js'
  ],

Plugins

firebase.js

var admin = require("firebase-admin");

var serviceAccount = require("whatsapp-f91a0.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://whatsapp-f91a0.firebaseio.com"
});

const db = admin.database();

export {db}

index.vue

<script>
import db from 'firebase';

  db.collection('categorias').doc('aaa').get()
  .then(doc=>{
    if (!doc.exists){
      console.log('no existe')
    }
  })
  .catch(err=>{
    console.error('error', err);
    process.exit();
  });
</script>

Here I get an error when compiling

Error

 WARN  Compiled with 3 warnings                                                                                                    friendly-errors 17:54:45  


 WARN  in ./node_modules/hash-stream-validation/index.js                                                                           friendly-errors 17:54:45  

Module not found: Error: Can't resolve 'fast-crc32c' in 'D:\Educacion\Proyectos\Go\social\node_modules\hash-stream-validation'     friendly-errors 17:54:45
                                                                                                                                   friendly-errors 17:54:45

 WARN  in ./node_modules/retry-request/index.js                                                                                    friendly-errors 17:54:45  

Module not found: Error: Can't resolve 'request' in 'D:\Educacion\Proyectos\Go\social\node_modules\retry-request'                  friendly-errors 17:54:45
                                                                                                                                   friendly-errors 17:54:45  

 WARN  in ./node_modules/configstore/node_modules/write-file-atomic/index.js                                                       friendly-errors 17:54:45  

Module not found: Error: Can't resolve 'worker_threads' in 'D:\Educacion\Proyectos\Go\social\node_modules\configstore\node_modules\write-file-atomic'        
                                                                                                                                   friendly-errors 17:54:45  

 ERROR  Failed to compile with 20 errors                                                                                           friendly-errors 17:54:45  

These dependencies were not found:                                                                                                 friendly-errors 17:54:45
                                                                                                                                   friendly-errors 17:54:45  
* child_process in ./node_modules/google-auth-library/build/src/auth/googleauth.js                                                 friendly-errors 17:54:45  
* dns in ./node_modules/@grpc/grpc-js/build/src/resolver-dns.js                                                                    friendly-errors 17:54:45  

 WARN  in ./node_modules/configstore/node_modules/write-file-atomic/index.js                                                       friendly-errors 17:54:45  

Module not found: Error: Can't resolve 'worker_threads' in 'D:\Educacion\Proyectos\Go\social\node_modules\configstore\node_modules\write-file-atomic'        
                                                                                                                                   friendly-errors 17:54:45  

 ERROR  Failed to compile with 20 errors                                                                                           friendly-errors 17:54:45  

These dependencies were not found:                                                                                                 friendly-errors 17:54:45  
                                                                                                                                   friendly-errors 17:54:45  
* child_process in ./node_modules/google-auth-library/build/src/auth/googleauth.js                                                 friendly-errors 17:54:45  
* dns in ./node_modules/@grpc/grpc-js/build/src/resolver-dns.js                                                                    friendly-errors 17:54:45  
* fs in ./node_modules/@google-cloud/storage/build/src/file.js, ./node_modules/@grpc/grpc-js/build/src/tls-helpers.js and 8 others friendly-errors 17:54:45  
* http2 in ./node_modules/@grpc/grpc-js/build/src/server.js                                                                        friendly-errors 17:54:45  
* net in ./node_modules/@grpc/grpc-js/build/src/resolver-dns.js, ./node_modules/http-proxy-agent/dist/agent.js and 1 other         friendly-errors 17:54:45  
* tls in ./node_modules/@grpc/grpc-js/build/src/channel-credentials.js, ./node_modules/http-proxy-agent/dist/agent.js and 1 other  friendly-errors 17:54:46  
* whatsapp-f91a0.json in ./plugins/firebase.js  

Could someone help me please

Nuxt is a frontend framework with the goal of serve the content in a variety of ways (including server side).

Firebase-admin is a server side library. You could make it work with some tweaks here and there but it's not recommendable at all, starting from the fact that you'd have to make your credentials public.

Use Firebase Javascript SDK optionally with Firebase-Nuxt in combination of a set of rules and auth claims , so you can work as admin.

One way to do this is to initialize the app two different times, one on the server and one on the client. On nuxt.config.js, make sure you do something like this

serverMiddleware : [
    { 
      path : '/api',
      handler : '~/api/serversidefirebase.js'
    }
],
plugins: [
    {
      src : '~/plugins/clientsidefirebase.js',
      ssr : false
    },
]

Register your API in the serverMiddleware and for all client side plugins, specify ssr: false. tadaaa..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM