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

试图运行编写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 

任何帮助将不胜感激!

我在我的Mac(小牛)上testing了这个,它对我很有用。 运行crontab,并在脚本所在的文件夹中获取my_data.json。

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

以下是我通常如何设置cron作业:

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

现在您可以查看日志并确保它运行,然后检查邮件的结果。 再次,这听起来像一个权限问题。 您也可以尝试暂时写入每个人都拥有完整的__dirname的path,如/tmp ,而不是使用__dirnameparsingpath。