2016-02-13 89 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'腳本里面有什麼? –