【问题标题】:Error: EACCES when writing file using Node.js错误:使用 Node.js 写入文件时出现 EACCES
【发布时间】:2014-08-30 04:19:59
【问题描述】:

我在尝试运行写入 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

任何帮助将不胜感激!

【问题讨论】:

    标签: node.js cron


    【解决方案1】:

    我在我的 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 解析路径。

    【讨论】:

    • 这确实是我的权限问题。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多