如何从cpanel启用node.js应用程序登录?

如何从cpanel启用node.js应用程序登录?,node.js,cpanel,error-logging,Node.js,Cpanel,Error Logging,我有一个node.js应用程序,它使用nodeEmailer发送电子邮件。它在本地主机上运行良好,但当我在服务器上尝试时,我无法接收任何邮件 因为,应用程序的其他活动工作正常,这意味着我假设nodemailer已正确安装在服务器上。我尝试了两种方式:使用主机作为我的服务器,使用gmail作为服务的一部分。这是我上次试过的。这也适用于本地主机。但是,当我把它放到服务器上时,并没有得到任何响应 我将nodeEmailer的配置为: const output = ` <h3>Li

我有一个node.js应用程序,它使用nodeEmailer发送电子邮件。它在本地主机上运行良好,但当我在服务器上尝试时,我无法接收任何邮件

因为,应用程序的其他活动工作正常,这意味着我假设nodemailer已正确安装在服务器上。我尝试了两种方式:使用主机作为我的服务器,使用gmail作为服务的一部分。这是我上次试过的。这也适用于本地主机。但是,当我把它放到服务器上时,并没有得到任何响应

我将nodeEmailer的配置为:


const output = `
    <h3>Limit Details</h3>
    <p>Admin has added ${limit} quota(s) to ${username}.</p>
  `;

  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
    service: 'gmail',
    port: 25,
    secure: false, // true for 465, false for other ports
    auth: {
        user: '<gmail>', 
        pass: '<password>' 
    }
  });

  // setup email data with unicode symbols
  let mailOptions = {
      from: '"Sender" <sender gmail>', // sender address
      to: '<receiver gmail>', // list of receivers
      subject: 'Quota added information.', // Subject line
      html: output // html body
  };

  // send mail with defined transport object
  transporter.sendMail(mailOptions, (error, info) => {
      if (error) {
          return console.log(error);
      }
      console.log('Message sent: %s', info.messageId);   
      console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
  });


常量输出=`
限制详细信息
管理员已将${limit}配额添加到${username}

`; //使用默认SMTP传输创建可重用的传输对象 让transporter=nodeEmailer.createTransport({ 服务:“gmail”, 港口:25, 安全:false,//对于465为true,对于其他端口为false 认证:{ 用户:“”, 通行证:“” } }); //使用unicode符号设置电子邮件数据 让邮件选项={ 发件人:“‘发件人’,//发件人地址 收件人:“,//收件人列表” 主题:'配额添加信息',//主题行 html:output//html正文 }; //使用定义的传输对象发送邮件 transporter.sendMail(邮件选项,(错误,信息)=>{ 如果(错误){ 返回console.log(错误); } console.log('发送的消息:%s',info.messageId); log('预览URL:%s',nodeEmailer.getTestMessageUrl(信息)); });

为了进行测试,我已经设置了控制台消息ID和预览Url,从哪里可以在cpanel中查看此控制台消息?我如何在cpanel中查看我的应用程序中的这些受安慰的内容???

不幸的是,据我所知,在cpanel服务器上访问节点的日志并不容易。 我通常做的是将日志写入文件:

const log4js = require('log4js');

log4js.configure({
  appenders: { everything: { type: 'file', filename: 'logs.log' } },
  categories: { default: { appenders: ['everything'], level: 'ALL' } }
});

const logger = log4js.getLogger();
然后,您可以使用以下工具创建日志:

logger.debug('log message');
您还可以通过服务器提供日志文件:

app.get('/log', (req, res) => {
  res.sendFile(path.join(__dirname + '/logs.log'));
});

cPanel的应用程序管理器不是很充实。我一直在尝试,并将其与我习惯的(PM2)进行比较,然后将切换回PM2。 如果有人对支持cPanel感兴趣,我确实向cPanel提出了一个功能请求

否则,答案是使用@zenott建议的自定义记录器写出。但是,我更喜欢覆盖console.log,因此如果需要,可以很容易地切换回常规的控制台日志记录

我的解决方案:

const moment = require('moment')
const fs = require('fs')
let logStream = fs.createWriteStream('log.txt')
let console = {}
console.log = (obj) => {
  var s = ''
  if (typeof obj === 'string')
    s = obj
  else
    s = JSON.stringify(obj)

  var dS = '[' + moment().format(momentFormat) + '] '
  s = `[${dS}] ${s}'\n'`
  logStream.write(s)
}

cPanel的nodeJS应用程序管理器感觉不太好,所以在试用了cPanel的“解决方案”之后,我再次使用PM2。我用cPanel创建了一个功能请求,如果你想升级它,也许有一天他们会改进它?