6

I have created a basic node app with typescript top of it. I am using ts-node to do so and it's working totally fine with nodemon. But I need to move it to the server now I am stuck. PM2 is showing error all the time. I have gone through GitHub and other answers on StackOverflow. Nothing helped me here. please help.

I have tried installing typescript and ts-node with PM2. But It did not work for me. I also have tried running file directly, not worked. I am clueless now how should I fix this.

 "scripts": {
    "start": "nodemon -x ts-node src/server.ts"
  },

It works fine with simple npm run start command

madbo@DESKTOP-CS5UFKE MINGW64 /e/shailesh/nodejs/NodeType
$ npm run start

> NodeType@1.0.0 start E:\shailesh\nodejs\NodeType
> nodemon -x ts-node src/server.ts

[nodemon] 1.18.5
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `ts-node src/server.ts`
24 Mar 22:33:23 - listening on port 3000
Mongoose default connection is open to  mongodb://localhost:27017/todo 

What I have tried so far that didn't work *( PM2 is globally installed) *

pm2 start ts-node -- --type-check -r tsconfig-paths/register src/server.ts

It gave me this error

madbo@DESKTOP-CS5UFKE MINGW64 /e/shailesh/nodejs/NodeType
$ pm2 start ts-node -- --type-check -r tsconfig-paths/register src/server.ts
[PM2][ERROR] script not found : E:\shailesh\nodejs\NodeType\ts-node
script not found : E:\shailesh\nodejs\NodeType\ts-node
┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
└──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

I have also used the following

pm2 start npm  -- ts-node src/server.ts

and got

$ pm2 start npm  -- ts-node src/server.ts
[PM2] Applying action restartProcessId on app [npm](ids: 0)
[PM2] [npm](0) ✓
[PM2] Process successfully started
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────┬──────────┐
│ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user  │ watching │
├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼───────┼──────────┤
│ npm      │ 0  │ N/A     │ fork │ 11300 │ online │ 15      │ 0s     │ 0%  │ 21.5 MB   │ madbo │ disabled │
└──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

madbo@DESKTOP-CS5UFKE MINGW64 /e/shailesh/nodejs/NodeType
$ pm2 status
┌──────────┬────┬─────────┬──────┬─────┬─────────┬─────────┬────────┬─────┬────────┬───────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status  │ restart │ uptime │ cpu │ mem    │ user  │ watching │
├──────────┼────┼─────────┼──────┼─────┼─────────┼─────────┼────────┼─────┼────────┼───────┼──────────┤
│ npm      │ 0  │ N/A     │ fork │ 868 │ stopped │ 24      │ 0      │ 0%  │ 0 B    │ madbo │ disabled │
└──────────┴────┴─────────┴──────┴─────┴─────────┴─────────┴────────┴─────┴────────┴───────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

Please help me fixing this

I want it to be working on a server with pm2 on the server. I will be great full if anyone of you can fix my problem. Thanks

Shailesh Jha
  • 1,122
  • 1
  • 8
  • 9

3 Answers3

13

Step 1

create a file run-ts.sh with

ts-node -T index.ts

Step 2

run this command

pm2 start run-ts.sh

And with that you will have running your Typescript application

HerberthObregon
  • 1,811
  • 19
  • 23
2

It's very simple guys.

Just use tsc and pm2 watch combination with single & to run both commands.

"scripts": {
    "serve": "tsc src/app.ts -w & pm2 start dist/app.js --watch"
},
Renjith
  • 2,025
  • 3
  • 12
  • 20
0

I had same issue and below sweet solution I got, It may help you.

package.json

"scripts": {
      "start:local": "nodemon --exec ts-node local.ts",
      "start": "node index.js"
}

To run npm run start with pm2

pm2 start npm  -- run start

To run npm run start:local with pm2

pm2 start npm  -- run start:local

Note: ts-node and pm2 installed globally

Patel Hardik
  • 71
  • 2
  • 10