错误:使用Node.js写入文件时的EACCES

时间:2014-08-29 19:47:13

标签: node.js cron

尝试运行编写JSON文件的cron作业时遇到错误。

这是我的节点文件中的代码:

var request = require('request');
var fs = require('fs');
var url = "file url";

request.get(url, function(err, response, data) {
    if (err || response.statusCode != 200) {
        console.log('Error: ' + err);
        return;
    }

    var json = JSON.parse(data);
    var processed_json = JSON.stringify(transformJSON(json));

    fs.writeFile(__dirname + "/my_data.json", processed_json,
        function(err) {
            if (err) {
               console.log(err);
            }
    });
});

cron作业给出的错误是:

{ [Error: EACCES, open '.../my_data.json']
   errno: 3,
   code: 'EACCES',
   path: '.../my_data.json' }

我的crontab中的行是:

* * * * * node web_scripts/converter.js

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

我在我的Mac(Mavericks)上测试了它,它适用于我。 crontab运行,我在脚本所在的文件夹中获取my_data.json。

最有可能的是,cron作业无权写入脚本所在的web_scripts。您通常可以检查/ var / log / mail / $ YOURUSER以查看任何cron结果。

以下是我通常设置cron作业的方法:

touch ~/.crontab
vi ~/.crontab # add your cronjob
crontab ~/.crontab 

现在您可以拖尾日志并确保它运行,然后检查邮件结果。同样,这听起来像权限问题。您也可以尝试临时写入路径,每个人都有完整的权限,例如/tmp,而不是使用__dirname解析路径。