Reputation: 1202
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
> [email protected] 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
Upvotes: 8
Views: 17530
Reputation: 357
Alternatively, you can do this:
"scripts": {
"start": "pm2 start 'npx ts-node src/server.ts'"
}
Or a slightly fancier, if you need the logging:
"scripts": {
"start": "pm2 start 'npx ts-node src/server.ts' --log logs.log --time"
}
Upvotes: 0
Reputation: 2141
create a file run-ts.sh with
ts-node -T index.ts
run this command
pm2 start run-ts.sh
And with that you will have run your Typescript application.
Upvotes: 17
Reputation: 121
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
Upvotes: 3
Reputation: 2451
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"
},
Upvotes: 1