@kr_ilya

Как исправить ошибку при запуске скрипта с помощью cron?

Дополнительная информация
Файл upload.ts содержит
console.log(process.argv);
Рассмотрим несколько ситуаций:
1. При запуске скрипта, находясь в директории root/ командой ts-node /root/autoinst/instAPI/bot/upload.ts

Скрипт запускается, но выдает ошибку Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i @types/node`.
Скрин

5e983429f3d7e559755859.png


2. При запуске скрипта, находясь в директории root/autoinst/instAPI командой ts-node /root/autoinst/instAPI/bot/upload.ts
Скрипт выполняется и возвращает
[
  '/root/.nvm/versions/node/v12.14.1/bin/ts-node',
  '/root/autoinst/instAPI/bot/upload.ts'
]

Всё Ок
Скрин
5e983470d1de0945548957.png


3. Выполним скрипт из директории root/ но командой
ts-node --dir /root/autoinst/instAPI/bot/ /root/autoinst/instAPI/bot/upload.ts

Результат тот же, что в п2. (Если выполнить командой ts-node -s /root/autoinst/instAPI/bot/upload.ts результат будет такой же). Список опций ts-node приложен ниже.
Скрин
5e983544213d7232566720.png


Список опций
5e9839c9a0d57570659243.png


Если создать новую cron задачу
*/5 7-21  * * * /root/.nvm/versions/node/v12.14.1/bin/ts-node --dir /root/autoinst/instAPI/bot/ /root/autoinst/instAPI/bot/upload.ts >> log.log


То после её выполнения в файле var/mail/root будет письмо такого содержания:
Subject: Cron <root@ip> /root/.nvm/versions/node/v12.14.1/bin/ts-node --dir /root/autoinst/instAPI/bot/ /root/autoinst/instAPI/bot/upload.ts >> /root/autoinst/tgBot/logs/cronTurn.log
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20200416105003.6DA211CEAC@.>
Date: Thu, 16 Apr 2020 13:50:03 +0300 (MSK)

(node:32420) ExperimentalWarning: The ESM module loader is experimental.
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /root/autoinst/instAPI/bot/upload.ts
    at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15)
    at Loader.getFormat (internal/modules/esm/loader.js:110:42)
    at Loader.getModuleJob (internal/modules/esm/loader.js:241:31)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at Loader.import (internal/modules/esm/loader.js:175:17)


Т.е скрипт не выполняется, а возвращает ошибку TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"

Как мне её исправить?

И еще. При запуске с крона команда ts-node не определяется, поэтому я указал полный путь к файлу, а именно - /root/.nvm/versions/node/v12.14.1/bin/ts-node
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Попробуйте добавить

*/5 7-21 * * * cd autoinst/instAPI; /root/.nvm/versions/node/...........
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы