console.log() does not appear in my terminal (nwjs)

五迷三道 提交于 2019-12-06 02:51:20

问题


In my nwjs app, I load a _launch.js file from an HTML file:

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

And in my _launch.js file, I fire up the the Node processes I need for an express server and socketIO.

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/';
});

The app launches just fine, and my express/socketIO connections are all perfectly working.

But while the console.log() in the server.listen() callback appears in my terminal, any messages I try to log from the server.js file (required earlier) never show up anywhere.

Any ideas why?

Per the nwjs wiki, any files loaded via require() should be running in the Node context (and mine otherwise appears to be) -- but for whatever reason, I cannot use console.log() to view logged information.


回答1:


Please look at the list of changes related to node in the nw.js wiki.

Since node-webkit supports GUI applications instead of console applications, the output of console.log() (and other similar methods such as console.warn() and console.error()) is redirected to WebKit's console. You may see it in your “Developer Tools” window (on its “Console” tab).




回答2:


You have to run DevTools for Background Page by right clicking on your app and choosing the Inspect background page option from the context menu.

click for full size image

Here is a related bug report: 0.13-beta3 console.log doesn't work in node context




回答3:


Just pass --enable-logging=stderr in chromium-args in your package.json:

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

Or use the Inspect background page DevTools as @Jakub Bejnarowicz has pointed out.



来源:https://stackoverflow.com/questions/29496847/console-log-does-not-appear-in-my-terminal-nwjs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!