Как настроить redis heroku, используя сеанс redis в узле js - PullRequest
1 голос
/ 28 сентября 2019

Я изо всех сил пытаюсь заставить геройку редис работать на Node.js ... Я создал базовое приложение с регистрационным логином и просмотром планов.все мои конечные точки работают в почтальоне, и когда я вхожу в маршрут входа в систему, я получаю куки.Как показано на изображениях ниже.ЛОКАЛЬНО я получаю печенье в почтальоне и в браузере во мне реагирует приложение.

введите описание изображения здесь Это изображение cookie-файла почтальона.

Ниже приведен фрагмент моего кода разработки.

const express = require("express");
const session = require("express-session");
const redis = require("redis");
const client = redis.createClient();
const redisStore = require("connect-redis")(session);
const cors = require("cors");
const cookieParser = require("cookie-parser");
const authRouter = require("../Auth/authRouter");
const plansRouter = require("../Plans/plansRouter");

// const redis = require("redis");
// if (process.env.NODE_ENV == "production") {
//   client = redis.createClient(process.env.REDIS_URL);
// } else {
//   client = redis.createClient();
// }

const server = express();
server.use(
  cors({
    credentials: true,
    origin: "http://localhost:3000"
  })
);
server.use(express.json());
server.use(cookieParser("this is my secret"));
server.use(
  session({
    secret: "this is my secret",
    name: "sequelize",
    unset: "destroy",
    rolling: true,
    credentials: "include",
    cookie: { secure: false },
    store: new redisStore({
      host: "localhost",
      port: 6379,
      client: client,
      ttl: 86400
    }),
    saveUninitialized: false,
    resave: false
  })
);
server.use("/auth", authRouter);
server.use("/plans", plansRouter);
console.log(client);

client.on("connect", () => {
  console.log(`\n ** Redis client connected ** \n`);
});
client.on("error", function(err) {
  console.log("Something went wrong " + err);
});

module.exports = server;

введите описание изображения здесь Это изображение cookie в браузере.

Это мой фрагмент кода, когда я имелRedis работает локально.


Но теперь я хочу развернуть его, поэтому я решил использовать heroku, и он не хочет работать.Я прочитал документы разработчика Heroku и не могу заставить его работать

Поэтому я добавил process.env.REDIS_URL, но я не уверен, что еще делать.Я не уверен, что мне нужно что-то менять в магазине.Я пытался сменить хост, но ничего не получалось.Ниже приведен фрагмент кода, который я пытался развернуть в рабочей среде.

const express = require("express");
const session = require("express-session");
const redis = require("redis");
const client = redis.createClient(process.env.REDIS_URL);
const redisStore = require("connect-redis")(session);
const cors = require("cors");
const cookieParser = require("cookie-parser");
const authRouter = require("../Auth/authRouter");
const plansRouter = require("../Plans/plansRouter");

// IM NOT SURE IF I NEED THIS CODE BELOW COMMENTED OUT

// const redis = require("redis");
// if (process.env.NODE_ENV == "production") {
//   client = redis.createClient(process.env.REDIS_URL);
// } else {
//   client = redis.createClient();
// }

const server = express();
server.use(
  cors({
    credentials: true,
    origin: "https://client.nicholaspatterson36.now.sh"
  })
);
server.use(express.json());
server.use(cookieParser("this is my secret"));
server.use(
  session({
    secret: "this is my secret",
    name: "sequelize",
    unset: "destroy",
    rolling: true,
    credentials: "include",
    cookie: { secure: false },
    store: new redisStore({
      host: "localhost",
      port: 6379,
      client: client,
      ttl: 86400
    }),
    saveUninitialized: false,
    resave: false
  })
);
server.use("/auth", authRouter);
server.use("/plans", plansRouter);
console.log(client);

client.on("connect", () => {
  console.log(`\n ** Redis client connected ** \n`);
});
client.on("error", function(err) {
  console.log("Something went wrong " + err);
});

module.exports = server;
...