Skip to Content
We're building a full JS ecosystem for Unity, with OneJS at the core (open source release soon 🚀). Also cooking up a bunch of pre-made game UIs, plus a big site revamp in progress.

Remote debugging and Source Maps are supported for either the V8 or NodeJS backends. (See Switching Backends)

Remote Debugging

You can use DevTools for this (i.e. chrome://inspect for Chrome or edge://inspect for Edge). Just make sure to enable Debugger Support on ScriptEngine first, then you’ll be able to find the Remote Target named “Puerts Inspector” in the DevTools.

Source Maps

You’ll need to install the source-map-support npm package first. Then, include something like the following block before doing anything else in your code:

index.js
require("source-map-support").install({ retrieveSourceMap: (source: string) => { const fullpath = require('path').join(___workingDir, source + ".map") if (!require('fs').existsSync(fullpath)) return null return { map: require('fs').readFileSync(fullpath, 'utf8') } } })

For Source Maps to show up properly in DevTools, you should also modify your esbuild.mjs file to change from sourcemap: true to sourcemap: "inline".

For V8, you’ll also need to polyfill require() (i.e. as a preload on ScriptEngine) with something like this:

sms.mjs
const require = function(name) { if (name === 'fs') { return { existsSync: function(path) { return CS.System.IO.File.Exists(path); }, readFileSync: function(path) { return CS.System.IO.File.ReadAllText(path); } } } else if (name === 'path') { return { dirname: function(path) { return CS.System.IO.Path.GetDirectoryName(path); }, resolve: function(dir, url) { url = url.replace(/\\/g, "/"); while (url.startsWith("../")) { dir = CS.System.IO.Path.GetDirectoryName(dir); url = url.substr(3); } return CS.System.IO.Path.Combine(dir, url); }, join: function() { return CS.System.IO.Path.Combine(...arguments); } } } return null; };

(This is also available as OneJS/Misc Assets/Preloads/sms.mjs.txt)