Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有firebase的Node.js不会在会话中保存信息_Javascript_Node.js_Firebase_Session_Cookies - Fatal编程技术网

Javascript 带有firebase的Node.js不会在会话中保存信息

Javascript 带有firebase的Node.js不会在会话中保存信息,javascript,node.js,firebase,session,cookies,Javascript,Node.js,Firebase,Session,Cookies,我正在尝试在我的应用程序中使用会话,以跟踪用户登录等情况 但是 当我尝试使用最简单的方法时,我不断得到错误: 警告:connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程 在那里,经过多次搜索,我添加了firebase会话功能, 但是现在,即使我没有收到任何错误,会话中也没有保存任何内容 这是我的代码: const functions = require('firebase-functions'); const ex

我正在尝试在我的应用程序中使用会话,以跟踪用户登录等情况

但是

当我尝试使用最简单的方法时,我不断得到错误:

警告:connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程

在那里,经过多次搜索,我添加了firebase会话功能, 但是现在,即使我没有收到任何错误,会话中也没有保存任何内容

这是我的代码:

    const functions = require('firebase-functions');
    const express = require('express');
    const session = require('express-session');
    const FirebaseStore = require('connect-session-firebase')(session);
    const firebase = require('firebase-admin');

    const ref = firebase.initializeApp(
        functions.config().firebase
    );

    const app = express();

    app.use(session({
      store: new FirebaseStore({
        database: ref.database()
      }),
      secret: 'asdfasgbrwewet53hnhwetynsy',
      resave: true,
      saveUninitialized: true
    }));

    app.get('/', function(req, res, next) {
      console.log(req.session);
      req.session.username='rakafa';
      res.send('Returning with some text');
    });

    app.get('/bar', function(req, res, next) {
      console.log(req.session);
      var someAttribute = req.session.username;
      res.send(`This will print the attribute I set earlier: ${someAttribute}`);
    });


    exports.app = functions.https.onRequest(app);
这就是我目前所做的:

  • 我最初使用会话的示例:
  • 我从npm获取了firebase部分:
  • 尝试使用radis store作为解决方案,但没有发现以下消息:
  • 使用会话存储,给了我和不使用任何东西一样的担忧
  • 这个问题让我想到了使用firebase会话
  • 我看到了一个关于cookies的例子,但我不理解,也没有找到另一个例子
换句话说,我刚刚开始学习Node.js,所以请尝试使用简单的示例,这样我就能理解;)

请原谅我父亲的错误

请帮忙……

==编辑===

根据orxelm的回答,我将我的
ref
更改为:

    const ref = firebase.initializeApp({
      //admin.credential.cert(serviceAccount)
      credential: firebase.credential.applicationDefault(),
      databaseURL: "https://*****.firebaseio.com/"
    });
但是,当我运行应用程序时,一旦我刷新页面,会话中就没有任何内容了

^^ 我可以看到应用程序在服务器上创建了很多会话。 但他们都没有我在应用程序上添加的信息,
因为我只使用一个浏览器,所以应该只有一个会话,我错了吗?

firebase配置在哪里? 可能尝试以下方式初始化firebase管理员:

 admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
 });
admin.initializeApp({
凭证:管理员凭证证书(serviceAccount),
数据库URL:'https://.firebaseio.com'
});

我在使用firebase主机和函数时遇到了这个问题,但只需在会话中设置
名称:“\u session”
即可解决

app.use(session({
  name:"__session,
  ...

添加此项后,在会话中保存值,如
req.session.username='rakafa'
效果很好。

这种方法对我从数据库获取数据很有效,但我将尝试你说的方法。只是,我在哪里可以找到凭据?以及“管理员”来自哪里?这和我使用“firebase”一样吗?我也面临着同样的问题。有人能帮我解决这个问题吗?