Как вы запускаете NodeJS Express API с файлами машинописного текста с помощью Forever?

Я установил npm навсегда, также npm установил ts-node и npm установил typescript, чтобы попытаться запустить этот API. Я пытался «навсегда запустить -v -c ts-node ./lib/server.ts» или «навсегда начать -v -v ts-node./lib/app.ts» и много вариантов, чтобы запустить его, но навсегда журналы выдает ошибку

events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: spawn tail ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'spawn tail',
  path: 'tail',
  spawnargs: [ '-n', 100, 'C:\\Users\\*****\\.forever\\P0EG.log' ]

Если я слежу за этим файлом журнала, он говорит

'ts' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл. ошибка: Навсегда обнаруженный скрипт завершился с кодом: 1

Я работаю над этим в течение нескольких дней и, похоже, не могу найти решение, мне нужно запустить сервер в фоновом режиме без необходимости открывать VSCode или любое другое окно, поскольку это будет работать на виртуальной машине и нуждаться в нем. всегда быть готовым к тому, чтобы клиент мог поразить свои конечные точки. это структура папок проекта, а клиентская сторона — это проект Angular, если это имеет значение

введите здесь описание изображения


person dEv93    schedule 03.04.2020    source источник
comment
Почему вы используете файл .ts? Файл nodejs должен быть файлом .js. Forever предназначен только для поддержания работы nodejs сервера и его перезапуска в случае сбоя. stackoverflow.com/a/32944853/185672   -  person Phil    schedule 03.04.2020
comment
@Phil, этот проект был начат другим разработчиком, и он подумал, что если внешний интерфейс был угловым, который использует скрипт типа, почему бы также не использовать файлы .ts в бэкэнде, это была его логика, я не зациклен на использовании навсегда, если есть другой способ достижения моей цели, я открыт, навсегда - это то, что я видел, как большинство людей используют. Так мне нужно создать эквивалентный файл .js?   -  person dEv93    schedule 03.04.2020


Ответы (2)


Встройте Angular в папку dist, используя ng build --prod.

Angular.json файл должен содержать инструкции о том, как это сделать

"options": {
    "outputPath": "dist",

    "index": "... index.html",
    "main": "... main.ts",

    "assets": [
        ... assets file location
    ],
    "styles": [
         ... your css
    ],
    "scripts": []
}

Пусть ваш сервер node указывает на этот каталог:

/* init static directory */
app.use(express.static(path.join(__dirname, 'dist')));
person Phil    schedule 03.04.2020
comment
Это делается для того, чтобы Node API знал, где найти переданный server.js? - person dEv93; 03.04.2020

Прежде всего, чтобы исправить это, мне пришлось запустить «npm run prod», это вызвало сборку npm, которая дала мне нужную папку dist с файлами app.js и server.js.

Затем я обнаружил, что была проблема с тем, что новейшая версия Forever могла читать файловые пространства в «C: Program Files», поэтому мы понизили версию до навсегда v1.0.1, как только я это сделал, я запустил «навсегда запустить server.js» и это заставило мой API работать на правильном порту, и мое приложение Angular смогло его поразить.

person dEv93    schedule 03.04.2020