运行 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
我使用用 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