【发布时间】:2020-11-16 01:26:23
【问题描述】:
当我在本地运行我的应用程序时,我的会话可以正常工作。但是当我将它部署到 Heroku 时,我的会话停止工作。
我的应用配置在这里:
const express = require('express');
const session = require('express-session');
const cors = require('cors');
const bodyParser = require('body-parser');
const mysql = require('mysql');
// Setting up CORS, such that it can work together with an Application at another domain / port
index.use(cors({origin: [myapplink.com], credentials: true}));
// For being able to read request bodies
index.use(bodyParser.json());
// Initializing the session magic of express-session package
index.use(session({
secret: "secret",
resave: false,
saveUninitialized: true,
cookie: {
expires: 7*24*3600*1000,
}));
这里是我使用会话的地方:
//LOGIN
index.post("/api/login", function (req, res) {
loginQuery = `SELECT user_id, username, gold, powder, settings FROM users WHERE (email = '${req.body.username}' OR username = '${req.body.username}') AND password = '${req.body.password}'`;
pool.query(loginQuery, function (error, rows) {
if (error) {
console.error(error);
} else {
if (rows.length===1) {
req.session.userData = rows[0];
return res.status(200).send(true)
} else {
return res.status(500).send({
error: 'Bad login data'
});
}
}
})
});
错误示例如下:
/**
* Gets all user cards
*/
index.get('/api/getUnlockedCards', (req, res) => {
query = `SELECT DISTINCT unlockedCards.card_id, cards.* FROM unlockedCards INNER JOIN cards ON unlockedCards.card_id = cards.card_id where unlockedCards.user_id = '${req.session.userData.user_id}'`;
pool.query(query, function (error, rows) {
if (error) {
console.error(error);
} else {
return res.status(200).send(rows)
}
})
});
问题是当我尝试调用此端点时,我收到以下错误:
2020-07-26T16:28:54.693750+00:00 app[web.1]: TypeError: Cannot read property 'user_id' of undefined
2020-07-26T16:28:54.693750+00:00 app[web.1]: at Query.<anonymous> (/app/index.js:354:38)
2020-07-26T16:28:54.693751+00:00 app[web.1]: at Query.<anonymous> (/app/node_modules/mysql/lib/Connection.js:526:10)
2020-07-26T16:28:54.693751+00:00 app[web.1]: at Query._callback (/app/node_modules/mysql/lib/Connection.js:488:16)
2020-07-26T16:28:54.693752+00:00 app[web.1]: at Query.Sequence.end (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
2020-07-26T16:28:54.693753+00:00 app[web.1]: at Query._handleFinalResultPacket (/app/node_modules/mysql/lib/protocol/sequences/Query.js:149:8)
2020-07-26T16:28:54.693753+00:00 app[web.1]: at Query.EofPacket (/app/node_modules/mysql/lib/protocol/sequences/Query.js:133:8)
2020-07-26T16:28:54.693754+00:00 app[web.1]: at Protocol._parsePacket (/app/node_modules/mysql/lib/protocol/Protocol.js:291:23)
2020-07-26T16:28:54.693754+00:00 app[web.1]: at Parser._parsePacket (/app/node_modules/mysql/lib/protocol/Parser.js:433:10)
2020-07-26T16:28:54.693755+00:00 app[web.1]: at Parser.write (/app/node_modules/mysql/lib/protocol/Parser.js:43:10)
2020-07-26T16:28:54.693755+00:00 app[web.1]: at Protocol.write (/app/node_modules/mysql/lib/protocol/Protocol.js:38:16)
有什么问题,我该如何解决?
【问题讨论】:
标签: node.js heroku express-session