运行 ts-node 通过 cron 作业

Run ts-node via cron job

我使用用 TypeScript 编写的脚本来重新确定我的应用程序中的项目状态。我通常运行这一行:

npx ts-node statuscheck.ts

我希望每天在午夜 运行 执行此操作,为此我尝试安排一个 cron 作业,如下所示:

0 0 * * * npx ts-node statuscheck.ts

它并没有真正起作用,我相信是因为 $PATH 在 cron 中是不同的。有谁知道在原始 npx 行中最好使用 ts-node 安排此脚本的正确方法?

您需要指定 ts 文件所在文件夹的路径。

0 0 * * * /path/to/the/folder/node_modules/.bin/ts-node statuscheck.ts

我已经更新到:

PATH=/root/.nvm/versions/node/v12.18.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

30 20 * * * npx ts-node /root/app/server/src/scripts/statuscheck.ts > /root/app/logs/statuscheck.ts.log 2>&1
The log now says the following:
 npx: installed 9 in 2.19s Cannot find module 'typescript' Require stack:

/root/.npm/_npx/80229/lib/node_modules/ts-node/dist/index.js
/root/.npm/_npx/80229/lib/node_modules/ts-node/dist/repl.js
/root/.npm/_npx/80229/lib/node_modules/ts-node/dist/bin.js

我有点不明白,因为路径现在等于我在终端中拥有的...而且我在终端中没有被问到...它可以正常工作...

我终于明白了。似乎在命令中添加“cd”完全解决了它。这就是我的 crontab 最后的样子,没有错误,也不需要安装任何东西:

PATH=/root/.nvm/versions/node/v12.18.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

0 0 * * * cd /root/app/server/ && npx ts-node ./src/scripts/statuscheck.ts > /root/app/logs/statuscheck.ts.log 2>&1