- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里有什么问题?res.render('/somepage', {user:req.session.user})
它导致将循环结构转换为 JSON 错误,(导致 session 元素具有循环用户引用。)
exports.home = function (req, res) {
var entityFactory = new require('../lib/entity-factory.js').EntityFactory();
entityFactory.get_job_task_lists({
callback : function (err, job_task_lists) {
res.render('home.jade', {
locals:{
title: 'Logged in.',
user:req.session.user, // does not work
job_task_lists:job_task_lists || []
}
});
}
});
};
我添加了一些登录 node_modules/express/node_modules/connect/lib/middleware/session/memory.js
MemoryStore.prototype.set = function(sid, sess, fn){
var self = this;
process.nextTick(function(){
console.log(sess);//这是列出的输出
self.sessions[sid] = JSON.stringify(sess);
...
就结构而言,这就是我期望 session 的样子:
{ lastAccess: 1330979534026,
曲奇饼:
{ 小路: '/',
httpOnly:真,
_expires: 星期二, 06 Mar 2012 00:32:14 GMT,
原始最大年龄:14399999 },
user://这是我添加到 session 中的对象
{ id: 1,
用户名:'管理员',
密码:'8e3f8d3a98481a9073d2ab69f93ce73b',
创建日期:2012 年 3 月 5 日星期一 18:08:55 GMT } }
但这是我发现的:
{ lastAccess: 1330979534079,//新 session
曲奇饼:
{ 小路: '/',
httpOnly:真,
_expires: 星期二, 06 Mar 2012 00:32:14 GMT,
原始最大年龄:14399999 },
用户://但又来了,除了现在是一个混搭,
//包含它不应该拥有的成员,如本地人,
//以及,除了前 4 个属性之外的所有内容
{ id: 1,
用户名:'管理员',
密码:'8e3f8d3a98481a9073d2ab69f93ce73b',
创建日期:'2012-03-05T18:08:55.701Z',
本地人:
{ title: '已登录。',
user: [Circular],//现在是圆形
job_task_lists: [对象] },
title: '已登录。',
用户:[循环],
job_task_lists: [[对象], [对象], [对象], getById: [功能]],
尝试:['/home/dan/development/aqp/views/home.jade'],
范围: {},
父 View :未定义,
根:'/home/dan/development/aqp/views',
默认引擎:' Jade ',
设置:
{ 环境:'发展',
提示:真实,
意见:'/home/dan/development/aqp/views',
' View 引擎': ' Jade ' },
应用程序:
{堆栈:[对象],
连接数:6,
允许半开:真,
_handle: [对象],
_events: [对象],
httpAllowHalfOpen:假,
缓存:[对象],
设置:[对象],
重定向:{},
isCallbacks: {},
_locals: [对象],
动态 View 助手:{},
错误处理程序:[],
路线: '/',
路线:[对象],
路由器:[Getter],
__usedRouter: 真 },
部分:[功能],
提示:真实,
文件名:'/home/dan/development/aqp/views/home.jade',
布局:假,
isPartial: 真 } }
node.js:201
扔e;//process.nextTick 错误,或第一个滴答时的 'error' 事件
^
类型错误:将圆形结构转换为 JSON
在 Object.stringify( native )
在 Array.0 (/home/dan/development/aqp/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:77:31)
在 EventEmitter._tickCallback (node.js:192:40)
看看用户对象是如何嵌套的?
Converting circular structure to JSON
问题。
node_modules/connect/lib/middleware/session/session.js
最佳答案
这是在 View 中修改 session 数据的问题。
经过大量挖掘,我发现这是 2.5.8 中处理部分的方式的一个错误。我提交了 issue ,然后是 patch . (以防将来有人需要此信息)因为 npm 仍在提供 Express 2.5.8 AFAIK。
感谢您的帮助@freakish 和@Ryan
关于node.js - ExpressJS res.render() 错误(JSON.stringify 无法处理循环引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9561408/
基于此答案的问题:https://stackoverflow.com/a/18650183/4478897 我试图找到这个解决方案,但似乎没有任何效果符合我的需要。 集群 expressjs 和 so
我有一个使用 Sequelize.js 作为 ORM 运行的快速应用程序。我的 express 应用程序从我的主要 Rails 应用程序接收请求,并且由于跨域策略,这些请求是使用 getJSON 执行
如何处理同步错误并保证在同一代码中出现错误? 这是我的代码,但不确定其工作正常,有什么想法吗? helpers.list({ limit: 1 })
在我的 ExpressJS 代码中,我限制主体大小如下: app.use(bodyParser.urlencoded({ limit : "512kb", extended: fals
我有一个看起来像这样的对象: editinvite: { _id: '', title: '', codes_list: [] } 问题是我无法在 NodeJS 应用程序中访问codes_
我正在尝试让我的nodeapp 使用express 工作。 我已经通过 nginx 设置了反向代理以使用 https://dank.ml/api/v1但每当我启动我的应用程序时,它都不想检测 / 响应
我完全失去了理智: 我有一个快速应用程序:以下是此示例的几个文件的快照: 应用程序.js -模型 --Event.js --Match.js 路线 --matches.js app.js: globa
我有我的nodejs项目,我想将记录器与我的route.js分开以获得干净的代码。 但是我遇到了下一个问题,当我尝试将记录器加载到route.js 文件时,它会显示下一个错误: TypeError:
我在 MEAN 应用程序中的模板缓存方面遇到一些困难。我有一个导航栏,它使用条件逻辑来显示/隐藏向用户显示的按钮。当用户点击页面时,这些值将被设置为 null 或 false,但是一旦他们登录,这些值
是否可以根据可选路线创建不同的查询? app.get('/:genre/:book?', function (req, res) { var genre = req.params.genre; v
我正在尝试学习 ExpressJS,并且遇到了这段代码。我似乎无法理解 app.use 函数,并且文档对我来说也不清楚。当调用 app.use 时,此特定示例代码中的/public 目录到底发生了什么
我正在开发一个学校管理系统。当老师发送发布请求时,我在后端创建一个路由内的全局对象。所以当多个老师访问服务器时,会创建多个全局对象......或者每个老师访问同一个对象?(会被重写同一个对象吗?) 最
我有一个用 typescript 编写的小型微服务,在 AKS 上的 kubernetes 集群中运行。我使用 Helm 生成了入口 apiVersion: extensions/v1beta1 ki
我需要将 JSON 发送到我的服务器,但 POST 请求显示为空正文。这是我在前端的 typescript : function sendData() : void { console.log("Se
这是我的 app.js import path from 'path'; import bodyParser from 'body-parser'; import express from 'expr
我一直在使用 ExpressJS 来促进文件上传,但据我所知,您可以将文件上传到任何路由,无论它是否处理它。 说我有 app.post('/photos/upload', photos.upload)
我正在阅读 Express.JS 4.x API,并且很好奇他们是如何设置的。这是我对正在发生的事情的理解:在 Express.JS 4.x API 的示例代码中,express 模块被导入并分配给变
我有以下注册页面 form(method='post', action='users/register') .form-group label Name inp
我有诸如 :id/comments/、:id/otherRoute 等路线。对于这些路线,我需要创建新的 Controller 。例如: let id: number = +req.params["i
嘿,我有一个使用 Express.js 和 Handlebars 运行的网站,该网站的导航栏和侧边栏在所有页面上都保持相同。当我路由时,它仅更改页面容器 {{{body}}}。 有没有一种方法可以让我
我是一名优秀的程序员,十分优秀!