我的工作是在Ubuntu服务器上每5分钟从Web API获取一次数据:
*/5 * * * * /home/<u>/.nvm/versions/node/v0.12.5/bin/node /home/<u>/api/jobs/fetch-data.js >> /home/<u>/log/fetch.log 2>&1
如果我跑:
/home/<u>/.nvm/versions/node/v0.12.5/bin/node /home/<u>/api/jobs/fetch-data.js
从我的命令行,一切正常。但是当cron作业试图运行它时会出错,因为它无法找到我在任务中使用的模型。
我使用节点版本管理器安装了节点。我有一个更简单的任务,能够使用本地node_module dependnencies执行就好了,看起来好像发生的任何引导:
sails.load()
方法不好玩。我对节点世界很陌生,所以事物的内部运作仍然非常“在板子后面发生了魔法”。我希望其他人已经遇到过这个问题,这只是我犯的一个简单错误。
我写了一个小小的测试,看看我的更大的api fecting进程是做什么的,只是试图从数据库中提取一些事件并将它们写入控制台:
var Sails = require('sails');
Sails.load(function(err, sails) {
if(err) {
throw err;
}
Events.find({}).exec(function(err, events) {
if(err) throw new Error(err);
events.forEach(function(event) {
console.log(event);
process.exit();
});
});
});
此代码使用nvm use 0.12
,然后node api/jobs/simple.js
或仅使用:
/home/<u>/.nvm/versions/node/v0.12.5/bin/node /home/<u>/api/jobs/simple.js
工作正常。
但是这个:
/home/<u>/.nvm/versions/node/v0.12.5/bin/node /home/<u>/api/jobs/simple.js
cron作业设置中的表示事件未定义的错误
[编辑] 我不认为这是一个答案,但我使用了:https://www.npmjs.com/package/sails-hook-schedule
更改了4行代码,至少我现在可以安排数据提取。
我希望我能在cron-nvm-sails问题上得到一些帮助。