нет такого файла или каталога на сервере Parse - облачный код

Я использую сервер Parse и пытаюсь отправить электронное письмо с файлом Html. проблема Я не совсем уверен, как получить доступ к общей папке из облачного кода.

Это ошибка:

ENOENT: нет такого файла или каталога, откройте './public/invoice.html'

Каталог:

│  ├── cloud
│  │   ├── functions.js
│  │   ├── main.js
│  ├── public
│  │   ├── invoice.html

fs.readFileSync("../public / invoice.html", "utf8"

А это мой код:

  var fs = require('fs');

  Parse.Cloud.define("mailSend", function(request, response) {
    const apiKey = '4441*****************a47f';
    const mailgun = require("mailgun-js");
    const DOMAIN = 'user.mailgun.org';
    const mg = mailgun({apiKey: apiKey, domain: DOMAIN});
    const data = {
      from: 'email <email@example.com>',
      to: 'email@example.com',
      subject: 'Invoice',
      html:  fs.readFileSync("../public/invoice.html", "utf8") ||  null
    };
    mg.messages().send(data, function (error, body) {
      console.log(body);
    });
});

3 ответа

Попробуй это:

var path = require('path');
var fs = require('fs');

  Parse.Cloud.define("mailSend", function(request, response) {
    const apiKey = '4441*****************a47f';
    const mailgun = require("mailgun-js");
    const DOMAIN = 'user.mailgun.org';
    const mg = mailgun({apiKey: apiKey, domain: DOMAIN});
    const data = {
      from: 'email <email@example.com>',
      to: 'email@example.com',
      subject: 'Invoice',
      html:  fs.readFileSync(path.join(__dirname, "../public/invoice.html"), "utf8") ||  null
    };
    mg.messages().send(data, function (error, body) {
      console.log(body);
    });
});

Похоже. Проверьте это и попробуйте, Ошибка: ENOENT: нет такого файла или каталога, отключите

Спасибо всем за ответы, этот код мне подходит. Я использовал ejs вместо HTML. вы можете использовать HTML, но вам нужно добавить

var fs = require('fs'); вместо const ejs = require('ejs');

var path = require('path');
const ejs = require('ejs');
const mailgun = require("mailgun-js");
const apiKey = '444**********00a47f';
const DOMAIN = 'user.mailgun.org';
const mg = mailgun({apiKey: apiKey, domain: DOMAIN});

Parse.Cloud.define("SendEmail", function(request, response) {
        var orderId = request.params.orderId;
        var items = request.params.items;
        var details = request.params.details;
        var user = request.params.user;
        var subject = "Thank You for Your Order #" + orderId;
        var orderData = {
          user: user,
          items: items,
          details: details
        }

        ejs.renderFile(path.join(__dirname, './public/invoice.ejs'), orderData, (err, htmlString) => {
          if (err) console.error(err);

          let data = {
            from: 'app neme <email@gmail.com >',
            to: 'email@gmail.com',
            subject: subject,
            html: htmlString
          };

          mg.messages().send(data, function (error, body) {
            console.log(body);
            console.log(prods);
            response.success("success send");
          });
        });

    });
Другие вопросы по тегам