console.log()没有出现在我的终端(nwjs)

时间:2015-04-07 16:48:57

标签: javascript node.js node-webkit nw.js

在我的nwjs应用程序中,我从HTML文件加载 _launch.js 文件:

<html>
<body>
<script type="text/javascript" src="_launch.js"></script>
</body>
</html>

在我的 _launch.js 文件中,我启动了快速服务器和socketIO所需的Node进程。

var express = require('express'),
    app = express(),
    server = require('http').Server(app),
    io = require('socket.io')(server),
    gui = require('nw.gui'),

    __curDir = process.cwd(),

    //keep the logic for the IO connections separate
    ioServer = require(__curDir + '/server.js');

//configure Express to default web requests to /workspace/ folder
app.use(express.static(__curDir + '/workspace'));

ioServer.init(io, console);

server.listen(3000, function () {
    console.log('HTTP server listening on *:3000');
    window.location = 'http://localhost:3000/MyApp/';
});

该应用程序启动正常,我的express / socketIO连接完全正常工作。

但是当我的终端中出现server.listen()回调中的 console.log()时,我尝试从 server.js 文件中记录的任何消息(早先要求)从不出现在任何地方。

任何想法为什么?

根据nwjs wiki,通过 require()加载的任何文件都应该在Node上下文中运行(而且看起来似乎也是如此) - 但无论出于何种原因,我都无法使用 console.log()以查看记录的信息。

3 个答案:

答案 0 :(得分:22)

您必须通过右键单击您的应用并从上下文菜单中选择检查背景页选项来运行DevTools for Background Page。

Inspect background page
click for full size image

以下是相关错误报告:0.13-beta3 console.log doesn't work in node context

答案 1 :(得分:10)

只需在 package.json 中的--enable-logging=stderr中传递chromium-args

{
    ...
    "chromium-args": "--enable-logging=stderr",
    ...
}

或者使用Inspect background page DevTools,@Jakub Bejnarowicz指出。

答案 2 :(得分:7)

请查看nw.js wiki中的changes related to node列表。

  

由于node-webkit支持GUI应用程序而不是控制台应用程序,因此console.log()(以及其他类似方法,如console.warn()和console.error())的输出将重定向到WebKit的控制台。您可以在“开发人员工具”窗口(“控制台”选项卡)中看到它。