Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用脚本函数时,NodeEmailr transporter似乎会中断_Javascript_Node.js_Nodemailer - Fatal编程技术网

Javascript 当使用脚本函数时,NodeEmailr transporter似乎会中断

Javascript 当使用脚本函数时,NodeEmailr transporter似乎会中断,javascript,node.js,nodemailer,Javascript,Node.js,Nodemailer,我在这里遇到了一个nodemailer的情况,我正在构建一个联系表单,为了避免使用php,我试图在js上使用nodemailer,但是我发现了一个问题 当我在simples mailer.js上使用NodeEmailr并使用“node mailer.js”时,它可以工作: var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ service: 'gmail', aut

我在这里遇到了一个nodemailer的情况,我正在构建一个联系表单,为了避免使用php,我试图在js上使用nodemailer,但是我发现了一个问题

当我在simples mailer.js上使用NodeEmailr并使用“node mailer.js”时,它可以工作:

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'email',
    pass: 'password'
  }
});

var mailOptions = {
  from: 'person',
  to: 'email',
  subject: 'Teste nodemailer',
  text: `Teste`
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});
但当我尝试在脚本中插入它以验证表单时:

async function sendIT(){
    var email = document.getElementById('email').value;
    var name = document.getElementById('name').value;
    var msg= document.getElementById('msg').value;

    var error = false;

    if(name == ""){
        document.getElementById('nameError').classList.add('error');
        error = true;
    }else{
        document.getElementById('nameError').classList.remove('error');
    }
    if(msg == ""){
        document.getElementById('msgError').classList.add('error');
        error = true;
    }else{
        document.getElementById('msgError').classList.remove('error');
    }
    if (!(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email))){
        document.getElementById('emailError').classList.add('error');
        error = true;
    }else{
        document.getElementById('emailError').classList.remove('error');
    }

    if(!error){
          var transporter = nodemailer.createTransport({
            service: 'gmail',
            auth: {
              user: 'email',
              pass: 'passwor'
            }
        });
          var mailOptions = {
            from: 'person',
            to: email,
            subject: 'Test nodemailer',
            text: 'The ' +name+ ' sent the following message:\n\n\n' + msg
          };
          transporter.sendMail(mailOptions, function(error, info){
            if (error) {
                alert('e-mail failed')
              console.log(error);
            } else {
                alert('E-mail sent');
              console.log('Email sent: ' + info.response);
            }
          });
    }
}
错误似乎出现在“transporter”上,因为当我创建transporter或尝试使用它发送电子邮件时,脚本会中断

有人知道为什么会这样吗?感谢您花时间阅读并回答此问题

编辑: 线路


脚本文件顶部给出了浏览器上的错误
uncaughtreferenceerror:require未定义
,这是一个由于我使用nodejs而不应该发生的错误。

您所说的“它中断”是什么意思?你有错误吗?如果(!error)正在执行,您是否应该查看if语句
,如果在if语句上方执行
console.log(error)
,您会看到什么?使用“it breaks”,我的意思是,当脚本到达transporter创建时,它将无法继续。if语句起作用,
console.log(error)
返回它应该返回的
false
。因此,如果我理解正确,您的脚本似乎挂起了,并且在控制台中没有产生任何错误?否,但我只是使用浏览器控制台本身进行调试,它有一半的响应是
无法读取未定义的
的属性“createTransport”。这让我觉得脚本无法访问nodeEmailr,但是代码是相同的,我不明白为什么它会这样做。你正在使用
var nodeEmailer=require('nodeEmailer')在文件的顶部?
var nodemailer = require('nodemailer');