如何解决节点 cron 计划未在 pm2 上运行
我有问题要问在远程服务器上使用 pm2 运行 cron 计划。我已经在我的本地主机上进行了测试,它使用 cron 计划工作,但是当我将它上传到远程服务器并使用 pm2 运行时,它不起作用。包含 cron 计划的文件称为“index.js”,当我在本地主机上测试它时,我会执行“node index.js”。在远程服务器上,我将 index.js 文件作为“pm2 start ./index.js”运行。
另外,我做了 pm2 log 以查看有关 cron 的任何特定错误,但我什么也没看到。我试过 运行 -> pm2 start ./index.js --cron "0 */1 * * * *" 但这不起作用。
我将在下面发布我的 index.js 代码
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var cors = require("cors");
var sms = require("./smsMessage");
var path = require("path");
const sql = require("mssql");
const cron = require("node-cron");
let shell = require("shelljs");
var nodemailer = require("nodemailer");
const corsOptions = {
origin: true,credentials: true,};
app.use(cors(corsOptions));
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb",extended: true }));
//DB CONNECTION
const config = {
user: "*****",password: "*****",server: "*****",database: "*****",encrypt: false,parseJSON: true,options: {
enableArithAbort: true,},};
//API FOR TWILIO
const accountSid = process.env.accountSid;
const authToken = process.env.authToken;
const client = require("twilio")(accountSid,authToken);
//0 */45 * * * *
//0 */1 * * * *
cron.schedule("0 */1 * * * *",function () {
sql.on("error",(err) => {
console.log("Something Went Wrong");
});
//EMAIL FOR "*****"
let transporter = nodemailer.createTransport({
host: "*****",port: "*****",secure: false,auth: {
user: "*****",pass: "*****",tls: {
rejectUnauthorized: false,});
sql
.connect(config)
.then((pool) => {
var qry =
" SELECT " +
" * " +
" FROM( " +
"SELECT toEmail,idClaim,sentDate,phone,DATEDIFF(DAY,CURRENT_TIMESTAMP,sentDate) as DAYINTERVAL,content FROM EMAIL_LOG_CREATE EM INNER JOIN users U ON EM.idClaim = U.idCustomer " +
" WHERE isActive = '0' " +
" ) a WHERE DAYINTERVAL = '-3' ";
return pool.request().query(qry);
})
.then((result) => {
// THIS LOOP WILL SEND OUT THE MESSAGE
var tel = "";
var SMSMessage = "";
for (var i = 0; i < result.recordsets[0].length; i++) {
tel = "+1" + result.recordset[i].phone;
SMSMessage =
"Please create a password for your new account by clicking this link. http://localhost:8877/new/register?email=" +
result.recordset[i].toEmail +
"&id=" +
result.recordset[i].idClaim;
// SMSMessage =
// "Please create a password for your new account by clicking this link. http://"*****"/new/register?email=" +
// result.recordset[i].toEmail +
// "&id=" +
// result.recordset[i].idClaim;
client.messages
.create({
body: SMSMessage,from: "*****",to: tel,})
.then((message) => console.log(message.sid));
}
// THIS FOR LOOP WILL SEND OUT THE EMAIL
for (var i = 0; i < result.recordsets[0].length; i++) {
var mailOptions = {
from: '""*****""<"*****">;',to: result.recordset[i].toEmail,subject: "NEW USER",html: result.recordset[i].content,};
transporter.sendMail(mailOptions,function (error,info) {
if (error) {
console.log(error);
} else {
console.log("Email sent: " + info.response);
}
});
}
})
.catch((err) => {
console.log(err);
});
});
app.use(function (req,res,next) {
const allowedOrigins = ["http://"*****"","http://localhost:3000"];
const origin = req.headers.origin;
if (allowedOrigins.includes(origin)) {
res.setHeader("Access-Control-Allow-Origin",origin);
} else {
res.header("Access-Control-Allow-Origin","*");
}
res.header(
"Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept"
);
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
next();
});
app.use("/",sms);
app.listen(5000,function (req,res) {
console.log("Server listening at port no. 5000");
});
module.exports = app;
(更新) 好的,所以我认为错误可能来自其他地方。我检查了终端,它返回了这个错误。我将再次发布下面的图片。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。