Не удается запустить typescript node.js приложение с ts-узлом с pm2

#node.js #typescript #pm2 #ts-node

#node.js #typescript #pm2 #ts-node

Вопрос:

Я создал базовое приложение node с typescript поверх него. Я использую ts-node для этого, и он отлично работает с nodemon. Но мне нужно переместить его на сервер, теперь я застрял. PM2 постоянно показывает ошибку. Я просмотрел GitHub и другие ответы на StackOverflow. Здесь мне ничего не помогло. пожалуйста, помогите.

Я попытался установить typescript и ts-node с PM2. Но у меня это не сработало. Я также пытался запустить file напрямую, не сработало. Теперь я понятия не имею, как мне это исправить.

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

Оно отлично работает с простой командой запуска npm run

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

> NodeType@1.0.0 start E:shaileshnodejsNodeType
> 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 😍

  

Что я пробовал до сих пор, что не сработало * (PM2 установлен глобально) *

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

Это выдало мне эту ошибку

 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:shaileshnodejsNodeTypets-node
script not found : E:shaileshnodejsNodeTypets-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

  

Я также использовал следующее

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

и получил

 $ 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 │ 2400%  │ 0 B    │ madbo │ disabled │
└──────────┴────┴─────────┴──────┴─────┴─────────┴─────────┴────────┴─────┴────────┴───────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

  

Пожалуйста, помогите мне исправить это

Я хочу, чтобы оно работало на сервере с pm2 на сервере. Я буду очень рад, если кто-нибудь из вас сможет решить мою проблему. Спасибо

Комментарии:

1. Вы выяснили, как это решить?

2. Нет, я использовал скомпилированную версию своего кода. и это то, что рекомендуется.

Ответ №1:

Шаг 1

создайте файл run-ts.sh с

 ts-node -T index.ts
  

Шаг 2

запустите эту команду

 pm2 start run-ts.sh
  

И при этом у вас будет запущено ваше приложение Typescript 🚀

Комментарии:

1. Прошло довольно много времени с тех пор, как вы опубликовали этот ответ, но вы спасли мой день: D

2. Вот и я, 2022 год, и еще один сэкономленный день 🎉

3. Я перепробовал все возможные решения в течение 3 часов. Благодаря этому ответу я буду хорошо спать сегодня вечером.

Ответ №2:

Это очень просто, ребята.

Просто используйте комбинацию tsc и pm2 watch с single amp; для запуска обеих команд.

 "scripts": {
    "serve": "tsc src/app.ts -w amp; pm2 start dist/app.js --watch"
},
  

Ответ №3:

У меня была такая же проблема, и ниже приведено приятное решение, которое я получил, оно может вам помочь.

package.json

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

Для запуска npm запустите start с pm2

 pm2 start npm  -- run start
  

Для запуска npm запустите start: local с pm2

 pm2 start npm  -- run start:local
  

Примечание: ts-node и pm2 установлены глобально