node.js - 无法使用 Node.js 和 Crontab

标签 node.js npm cron

我知道您可以通过执行以下操作在 Crontab 中运行 Node.js 脚本:

0 * * * * node /path/to/your/script.js

但我想使用 Crontab 运行 Node.js 应用程序,而不是脚本。我创建了一个 Node.js 应用程序,以便使用 Mocha、Chai 和 Selenium 编写一些自动化测试,并且我想使用 Crontab 定期运行它。我该怎么做呢?我目前通过在命令行中编写来运行我的应用程序:

npm run api-pro

其中 api-pro 是我的 package.json 中的一个脚本,它为生产 api 调用一些测试。

请注意,如果我只是尝试使用命令“npm run api-pro”编写 Crontab 作业,它无法识别命令 npm(显然我的计算机中安装了 Node)。

最佳答案

我的猜测是用户 cron 使用的 PATH 没有像你的用户那样配置 PATH,也不知道 node也不是 npm.

您可以尝试使用命令 which node 来了解您的 Node 二进制文件在哪里 (/some/path/to/node)

然后你可以在你的 crontab 中使用绝对路径:

0 * * * * /some/path/to/node /path/to/your/script.js

编辑:

nodenpm 添加到 $PATH 与使用绝对路径之间的区别在于绝对路径适用于一个可执行文件,因为 Linux不必搜索 PATH。 添加到 PATH 将使 Linux 识别 nodenpm 就像在您的用户中一样。它们在同一个文件夹中的事实不会影响这一点。

关于node.js - 无法使用 Node.js 和 Crontab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557146/

相关文章:

node.js - 浏览器重复创建与 websocket 的连接 - socket.io

javascript - 什么是javascript正则表达式来验证字符串值数组

Azure CI/CD - Azure 私有(private) Npm 注册表 - 无法进行身份验证,需要 : Bearer authorization_uri=https://login. windows.net

linux - 交替的 cron 作业问题

php - 在 Windows 服务器上运行 "cron"作业

mysql - Linux Bash 文件使用目录名

javascript - Node.js 应用程序接收来自浏览器的发射,但浏览器不接收返回的发射

JSON 合并并覆盖数组

javascript - 将一个 npm 模块编译成一个文件,没有依赖关系

javascript - 使用 webpack 在模板或 HTML 中注入(inject) JavaScript 文件