Simple script and binary to display Node.js and Chromium console messages in the terminal, when launching NW.js applications from the Windows command line.
Normally, when running the NW.js SDK in Windows, the nw executable immediately forks a new process and quits. This prevents being
able to monitor the terminal for console logs or other messages from Chromium. When launching an NW.js application via nwdc,
a wrapper process is kept running that will display output from the main Node.js process and all spawned Chromium windows.
-
Install the NW.js SDK:
a. Add
[email protected](choose the desired version) to thepackage.jsonfile of the NW.js application being developed.b. Download the SDK from https://nwjs.io/downloads/ and extract it to a directory within the
PATHenvironment variable. -
Add
nwdcto the NW.js application being developed:npm:
npm i nwdc
Yarn:
yarn add nwdc
-
Run the NW.js application using
npx nwdc .instead ofnw .. -
Press CTRL+C or close your NW.js application normally, to stop the
nwdc.exeprocess.
-
Download the SDK from https://nwjs.io/downloads/ and extract it to a directory within the
PATHenvironment variable. -
Download a pre-built
nwdc.exebinary from Releases or build one manually:npm i && npm run buildoryarn && yarn buildNOTE: It is useful to copy the
nwdc.exefile to the same directory as NW.js, so it can be executed without providing the full path. -
Run your NW.js application using
nwdcinstead ofnw.Example #1 -- From NW.js application directory when
nwdc.exeis not inPATH:C:\Users\Me\Downloads\nwdc.exe .
Example #2 -- From external directory when
nwdc.exeis inPATH:nwdc C:\Users\Me\Documents\Code\MyApp\
-
Press CTRL+C or close your NW.js application normally, to stop the
nwdc.exeprocess.
As an alternative to nwdc, any hex editor can be used to modify byte 0xD4 of the nw.exe binary to change the Windows Subsystem type from
02 (IMAGE_SUBSYSTEM_WINDOWS_GUI) to 03 (IMAGE_SUBSYSTEM_WINDOWS_CUI). A quick Node.js script to accomplish this is the following:
const { openSync, writeSync, closeSync } = require('node:fs');
const fd = openSync('nw.exe', 'r+');
writeSync(fd, '\x03', 0xd4, 'binary');
closeSync(fd);More information on the Windows Subsystem types can be found here: https://learn.microsoft.com/en-us/windows/win32/debug/pe-format