Development Debugging / Typescript Debugging
Actionhero makes it simple to use the node.js debugger, even when developing your project with Typescript. New Actionhero projects comes with a npm run debug script which will pass the proper arguments to ts-node-dev, which we use to run our development mode server. For older Actionhero projects, to start a debugger with ts-node-dev, the command is:
tsc && ts-node-dev --transpile-only --no-deps --inspect -- ./src/serverOnce your server is running in debug mode, you can then attach to it via a number of debuggers. The default debugger in Chrome can be used. Learn more here: https://nodejs.org/en/docs/guides/debugging-getting-started/.
You can also use the inspector built into your IDE. For example, VSCode is easy to use with the following .vscode/launch.json configuration. This example includes 2 ways to use the debugger: You can attach to an existing Actionhero process which was launched with npm run debug with Actionhero Debugger (attach), or you can have VSCode compile your Typescript and attach the debugger all at once (Actionhero Debugger (launch))
// from .vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Actionhero Debugger (attach)",
      "protocol": "inspector",
      "port": 9229,
      "restart": true,
      "localRoot": "${workspaceFolder}",
      "outFiles": ["${workspaceRoot}/dist/**/*.js"],
      "sourceMaps": true,
      "remoteRoot": "."
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Actionhero Debugger (launch)",
      "program": "${workspaceFolder}/src/server.ts",
      "preLaunchTask": "tsc: build - tsconfig.json",
      "outFiles": ["${workspaceFolder}/dist/**/*.js"],
      "outputCapture": "std"
    }
  ]
}Caveats:
Since we are using Typescript, there's not going to be a perfect 1-to-1 mapping with the TS and JS files. Both ways of using the debugger above has issues:
import { api } from "actionhero"; may become const actionhero_1 = require("actionhero"); and so to access api in the debugger you may need to do actionhero_1.apiActionhero Debugger (attach)), the debugger will open the JS files rather than the TS files (although it does a good job of finding the proper line number).ts-node-dev, a debug command in your package.json should be: "debug": "tsc && ts-node-dev --transpile-only --no-deps --inspect -- ./src/server". And be sure your tsconfig.json
includes "sourceMap": true.
Production Debugging
Modern versions of node.js have built-in inspector capabilities.
Run Actionhero with node's --inspect flag, ie: node ./dist/server.js --inspect start
More info about the node inspector can be found on the official node.js website.
actionhero console
Running "console" task
2015-11-14 17:48:01 - notice: *** starting actionhero ***
2015-11-14 17:48:01 - info: actionhero member 10.0.1.15 has joined the cluster
2015-11-14 17:48:01 - notice: pid: 38464
2015-11-14 17:48:01 - notice: server ID: 10.0.1.15
2015-11-14 17:48:01 - info: ensuring the existence of the chatRoom: defaultRoom
2015-11-14 17:48:01 - info: ensuring the existence of the chatRoom: anotherRoom
2015-11-14 17:48:01 - notice: environment: development
2015-11-14 17:48:01 - notice: *** Server Started @ 2015-11-14 17:48:01 ***
[ AH::development ] > api.id
‘10.0.1.15'
[ AH::development ] > Object.keys(api.actions.actions)
[ ‘cacheTest',
‘randomNumber',
‘swagger',
‘sleepTest',
‘status' ]Actionhero has a command-line interface called a REPL! This means you can spin up a new instance of Actionhero and manually call all the methods on the api namespace. This combined with the new RPC tools make this a powerful debugging and development tool. Running actionhero console will load up a version of Actionhero in your terminal where you have access to the api object. This version of the server will boot, initialize, and start, but will skip booting any servers. You will be connected to any databases per your initializers.
The REPL will:
NODE_ENV properly to load the configIf you are familiar with rails, this is very similar to rails console
The Actionhero server is open source, under the Apache-2 license
Actionhero runs on Linux, OS X, and Windows
You always have access to the Actionhero team via Slack and Github
We provide support for corporate & nonprofit customers starting at a flat rate of $200/hr. Our services include:
We have packages appropriate for all company sizes. Contact us to learn more.
We provide support for corporate & nonprofit customers starting at a flat rate of $200/hr. Our services include:
We have packages appropriate for all company sizes. Contact us to learn more.
For larger customers in need of a support contract, we offer an enterprise plan including everything in the Premium plan plus: