7 Debug Oracle JET Applications
Since Oracle JET web apps are client-side HTML5 applications written in JavaScript, you can use your favorite browser's debugging facilities.
Debug Web Applications
Use your source code editor and browser's developer tools to debug your Oracle JET app.
Developer tools for widely used browsers like Chrome, Edge, and Firefox provide a range of features that assist you in inspecting and debugging your Oracle JET app as it runs in the browser. Read more about the usage of these developer tools in the documentation for your browser.
By default, the ojet build
and ojet serve
commands use
debug versions of the Oracle JET libraries. If you build or serve your Oracle JET app in
release mode (by appending the --release
parameter to the ojet
build
or ojet serve
command), your app uses minified versions of
the Oracle JET libraries. If you choose to debug an Oracle JET app that you built in release
mode, you can use the --optimize=none
parameter to make the minified output
more readable by preserving line breaks and white space:
ojet build --release --optimize=none
ojet serve --release --optimize=none
Note that browser developer tools offer the option to "pretty print" minified source files to
make them more readable, if you choose not to use the --optimize=none
parameter.
You may also be able to install browser extensions that further assist you in debugging your app.
Finally, if you use a source code editor, such as Visual Studio Code, familiarize yourself with the debugging tools that it provides to assist you as develop and debug your Oracle JET app.
Use Preact Developer Tools
You can install a Preact browser extension to provide additional debugging tools in your browser’s developer tools when you debug your virtual DOM app.
Preact provides download links for the various browser extensions at https://preactjs.github.io/preact-devtools/.
preact/debug
as the first line in your app's
appRootDir/src/index.ts
file:import 'preact/debug';
import './components/app';
Oracle JET takes care of including this import when your virtual DOM app is built or served
in debug mode (the default option for ojet build
and ojet
serve
) by including the following injector token when you create the virtual DOM
app:
// injector:preactDebugImport
// endinjector
import './components/app';
As a result, you do not need to include the import
'preact/debug'
statement when you build or serve your app in debug mode or remove
it when you build or serve for release, as Oracle JET’s injector token ensures that the import
statement is only included in debug mode.
When you serve your virtual DOM app in debug mode (the default option for
ojet serve
), you’ll see an extra tab, Preact, in your browser’s developer
tools. In the following image, you see the Preact tab in the Chrome browser’s DevTools.
You can view the hierarchy of the components, select and inspect components, and perform other actions that assist you in debugging issues with your virtual DOM app.
![The surrounding text describes the image The surrounding text describes the image](img/preact-devtools.png)
When you build or serve the virtual DOM app in release mode, using the
--release
argument, Oracle JET does not import the Preact DevTools. Remove
the token if you do not want to use the Preact DevTools in debug mode.
One other thing to note is that Oracle JET includes the following entries in your app's
appRootDir/src/path_mapping.json
file when it creates your app. You need
these entries to be able to use the Preact extension discussed here.
. . .
"preact/debug": {
"cdn": "3rdparty",
"cwd": "node_modules/preact/debug/dist",
"debug": {
"src": [
"debug.umd.js",
"debug.umd.js.map"
],
"path": "libs/preact/debug/dist/debug.umd.js",
"cdnPath": "preact/debug/dist/debug.umd"
},
"release": {
"src": [
"debug.umd.js",
"debug.umd.js.map"
],
"path": "libs/preact/debug/dist/debug.umd.js",
"cdnPath": "preact/debug/dist/debug.umd"
}
},
"preact/devtools": {
"cdn": "3rdparty",
"cwd": "node_modules/preact/devtools/dist",
"debug": {
"src": [
"devtools.umd.js",
"devtools.umd.js.map"
],
"path": "libs/preact/devtools/dist/devtools.umd.js",
"cdnPath": "preact/devtools/dist/devtools.umd"
},
"release": {
"src": [
"devtools.umd.js",
"devtools.umd.js.map"
],
"path": "libs/preact/devtools/dist/devtools.umd.js",
"cdnPath": "preact/devtools/dist/devtools.umd"
}
},