Node.js 通过cron作业运行ts节点

Node.js 通过cron作业运行ts节点,node.js,linux,typescript,cron,npx,Node.js,Linux,Typescript,Cron,Npx,我使用用TypeScript编写的脚本来重新确定应用程序中的项目状态。我通常会说这句话: npx ts-node statuscheck.ts 我希望它每天午夜运行,为此我尝试按如下方式安排一个cron作业: 0 0 * * * npx ts-node statuscheck.ts 我相信它并没有真正起作用,因为$PATH在cron中是不同的。是否有人知道使用ts节点(如原始npx行中的ts节点)调度此脚本的正确方法?您需要指定存放您的ts文件的文件夹的路径 0***/path/to/the

我使用用TypeScript编写的脚本来重新确定应用程序中的项目状态。我通常会说这句话:

npx ts-node statuscheck.ts
我希望它每天午夜运行,为此我尝试按如下方式安排一个cron作业:

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

我相信它并没有真正起作用,因为$PATH在cron中是不同的。是否有人知道使用ts节点(如原始npx行中的ts节点)调度此脚本的正确方法?

您需要指定存放您的
ts
文件的文件夹的路径

0***/path/to/the/folder/node\u modules/.bin/ts node statuscheck.ts

您需要指定存放
ts
文件的文件夹的路径

0***/path/to/the/folder/node\u 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
我并没有得到它,因为路径现在等于终端中的路径。。。在候机楼我没被问到这个。。。它只是工作没有问题…

我已经更新到:

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

我并没有得到它,因为路径现在等于终端中的路径。。。在候机楼我没被问到这个。。。它只是工作没有问题…

我终于弄明白了。在命令中添加“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

我终于弄明白了。在命令中添加“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

您可以指定“路径=…”您需要指定已更新到的文件夹的路径:
path=/root/.nvm/versions/node/v12.18.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games:/snap/bin 30 20***npx ts node/root/app/server/src/scripts/statuscheck.ts>/root/app/logs/statuscheck.ts2> &1
日志现在显示如下:
npx:2.19s中安装的9找不到模块'typescript'需要堆栈:-/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/.npm/_npx/80229/lib/node/node/bin.js
,因为我已经平衡了通往终点站的道路。。。其中命令工作正常…您可以指定“PATH=…”您需要指定已更新到的文件夹的路径:
path=/root/.nvm/versions/node/v12.18.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games:/usr/local/games:/snap/bin 30 20***npx ts node/root/app/server/src/scripts/statuscheck.ts>/root/app/logs/statuscheck.ts2> &1
日志现在显示如下:
npx:2.19s中安装的9找不到模块'typescript'需要堆栈:-/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/.npm/_npx/80229/lib/node/node/bin.js
,因为我已经平衡了通往终点站的道路。。。命令运行得很好…似乎不起作用。。。输出日志显示:
/bin/sh:1:/root/app/server/src/scripts/npx:notfound
。。。有没有一种方法可以像我通常在终端中那样将所有内容都放在路径中?尝试更新的内容我遇到了这个问题,并通过在我的ts文件中提供到ts节点的完整路径来解决它:#/usr/bin/env-S npx/usr/local/bin/ts节点-TDidn似乎不起作用。。。输出日志显示:
/bin/sh:1:/root/app/server/src/scripts/npx:notfound
。。。有没有一种方法可以像我通常在终端中那样将所有内容都放在路径中?尝试更新的内容我遇到了这个问题,并通过在我的ts文件中提供到ts节点的完整路径来解决它:#/usr/bin/env-S npx/usr/local/bin/ts node-t您需要安装软件包的开发人员。您需要安装软件包的开发人员