【问题标题】:scribe js error - console.log not definedscribe js错误-未定义console.log
【发布时间】:2016-02-13 11:53:57
【问题描述】:

我使用的是 scribe js 之类的

app.js

var scribe = require('scribe-js')();
var console=process.console;
app.use(scribe.express.logger());
app.use('/logs', scribe.webPanel());

在我的

module.js

var like = 0;
var error=require('./error');
var console=process.console;  <-- this line
//only works if i comment above line
//else it shows console not defined

var like_dislike = {
    like: function(req, res, next) {
        like++;
        console.log(process.console);
        console.log("Like:" + like + " ClientTime:" + req.query.timestamp);
        res.sendStatus(200)
    }
}
module.exports=like_dislike

任何想法,至少从哪里开始寻找解决这个问题?

谢谢

编辑 错误.js

function error(res, custom_error, actual_error) {
    if (actual_error)
        console.error(actual_error);
    res.status(custom_error.status).send(custom_error.text);
}
module.exports=error;

【问题讨论】:

  • console 不是在全局对象之外吗?
  • 你所说的“关闭全局对象”是什么意思?如果我这样做 console.log(process) 我可以看到一个控制台对象
  • global 对象有一个名为console 的属性。在浏览器中,全局对象有一个名为window 的属性引用自身,在node 中,可以通过GLOBAL 访问全局对象。

标签: javascript node.js express scribe-js


【解决方案1】:

问题在于快速路由器在将请求传递给处理程序时不维护对控制台变量(或进程,似乎是)的引用。即使您尝试在同一文件中的匿名处理程序中使用控制台变量(不加载子模块),此问题仍然存在。

解决方案是在app.locals 中缓存对Scribes 控制台的引用,并通过req.app.locals.console 访问它。这个问题的更多细节:Global Variable in app.js accessible in routes?

我在 github 上向您发送了一个拉取请求。我所做的更新用以下样式的 cmets 标记:

/*
 * update explination
 */

【讨论】:

  • 嘿,我知道,但是 scribe 附加了自己的控制台
  • 所以理想情况下不将 this line 放入 module.js 中,我应该能够使用 console.tag('abc').log('xyz') 但我不是,它只是登录无标签抄写员
  • 我明白了,Scribe 正在修改控制台。重新阅读您的问题后,您的问题似乎不在于控制台,而在于./error./error 脚​​本的内容是什么?
  • 即使我删除了 error.js,同样的问题,令人沮丧的部分是我不知道从哪里开始
  • 那我误解了你说的意思:'...require('./error') 行,console.log() 是否有效,或者当您注释掉 var console... 行时是否有效
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 2015-05-05
  • 2020-04-22
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
相关资源
最近更新 更多