2016-02-13 85 views
0

我使用划线JS喜欢隶JS错误 - CONSOLE.LOG没有定义

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 

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

由于

EDIT error.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; 
+1

是不是'console'关闭全局对象? –

+0

你的意思是“脱离全球对象”?如果我做'console.log(进程)'我可以看到一个控制台对象 –

+0

'全局'对象有一个名为'console'的属性。在浏览器中,全局对象有一个名为'window'的属性,它引用自身,在'node'中,可以通过'GLOBAL'访问全局对象。 –

回答

1

的问题是,明确路由器不需要维护控制台变量的引用(或过程中,似乎),同时使沿于该请求处理程序。即使您尝试在同一文件中的匿名处理程序内使用控制台变量(不加载子模块),此问题仍然存在。

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

我送你在GitHub上拉请求。我所做的更新都标注了以下风格的注释:

/* 
* update explination 
*/ 
+0

嘿,我知道,但抄写员附加自己的控制台 –

+0

所以理想情况下,不要在module.js中放置'this line',我应该能够使用console.tag('abc').log('xyz'),但是我不,它只是在没有标签的情况下登录抄写 –

+0

我明白了,Scribe正在修改控制台。在重新阅读你的问题之后,似乎你的问题不是用控制台,而是用'。/ error'。 '。/ error'脚本里面有什么? –