如何解决通过crontab执行NodeJS会引发错误
我有一个使用discord.js模块的NodeJS脚本。 当我通过终端执行它时,它可以完美地工作。
const fs = require('fs');
const Discord = require('discord.js');
client = new Discord.Client(); client.on('ready',async() => {
console.log('I am ready!');
const dev = await client.users.fetch(2396720);
const json = JSON.stringify(dev);
fs.writeFile('/var/www/html/discord.json',json,function (err) {
if (err) throw err;
console.log('Saved!');
process.exit(0);
});
});
client.login('Mjky_Pn3Bk');
但是,当我使用crontab安排它时
* * * * * node /var/www/UserToJSON/index.js >> /tmp/results.log 2>&1
我收到此错误
/var/www/UserToJSON/node_modules/discord.js/src/client/Client.js:41
} catch {
^
SyntaxError: Unexpected token {
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:617:28)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/var/www/UserToJSON/node_modules/discord.js/src/index.js:8:11)
解决方法
Crontab执行了一个过时的分发节点程序包,该程序包位于/ usr / bin /
中解决方案是改用普通用户安装的节点版本,该版本位于/ usr / local / bin
crontab行应如下所示:
* * * * * /usr/local/bin/node /var/www/UserToJSON/index.js
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。