【问题标题】:Express JS pass console log to viewExpress JS 通过控制台日志查看
【发布时间】:2013-03-07 06:49:35
【问题描述】:

我想将 console.log 函数传递给我在 Node Express 中的视图,我已经尝试过:

res.render('index', {
"title" : 'My page',
"logger": console.log
}

我也试过了

res.render('index', {
"title" : 'My page',
"logger": function () {
        console.log(arguments);
    }
}

但它总是以空的形式出现,我错过了什么吗?

fwiw这就是我试图在我的视图中输出它的方式

script
    log = #{logger};

对于那些想知道原因的人

我在移动时在我的 iPad 2 上开发(它已越狱),Apple 在他们的智慧中删除了最近版本中的开发工具栏,所以我遇到了非常糟糕的警报,所以我想要一个临时的 console.log 到我的而是终端。

[编辑]

如果我使用了 Socket I/O

我可以在后端订阅前端的“日志”事件,并将这些事件和数据发送到控制台日志。

我没有将此作为答案,因为我认为这不是最好的方法,但我认为这会起作用。

【问题讨论】:

  • 那行不通。两个脚本都在不同的上下文中执行(在不同的设备上)。
  • iOS 6 添加了一个非常实用的 Web Inspector,您可以在计算机上使用 Safari 访问它。
  • @robertklep 没抓住重点.. 你没读过 OP 吗?
  • @Floby 一定有办法从前端做一个控制台日志,我怀疑这是一个明确的“不,不能做”的案例
  • @DaveMackintosh 没有错过重点,只是说 console.log 仍然有效,只是不同。

标签: javascript node.js express


【解决方案1】:

如果您使用 Express 3,我认为您可以在 app.locals 中公开 console.log() 函数。请参阅文档 here

所以,在您配置服务器的地方,您可能会有类似...

app.configure(function(){
  // some other configuration code

  app.locals.logger = function(arguments) {
    console.log(arguments);
  }

});

然后您可以像这样在视图中访问...

script
  var log = #{logger};
  log("Hello, world!");

例如,在 Chrome 中记录“Hello, world!”到网络检查员。

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多